problème avec la fonction fwrite(...) [C] - C++ - Programmation
Marsh Posté le 30-12-2002 à 18:51:43
Ca te dirais pas d'utiliser plustot fprintf ? fwrite c'est pour les ecritures binaires en general.
Marsh Posté le 30-12-2002 à 19:24:19
SirJeannot a écrit : pq tu fais des casts dans tes fwrite? |
ben j'ai essaié avec et sans ... le 1er argument et d'après le prototype un "const void*" dc j'ai casté, mais c vrai que c inutil mais c t pour testé...et kedalle
Marsh Posté le 30-12-2002 à 19:33:43
Kristoph a écrit : Ca te dirais pas d'utiliser plustot fprintf ? fwrite c'est pour les ecritures binaires en general. |
tout a fait
Merci !
...mais pkoi fwrite ne fait pas, j'aimerais bien savoir , c bien son but d'écrire ds un fichier
Marsh Posté le 30-12-2002 à 20:10:44
oui il ecrit bien dans ton fichier et il fait exactement ce qu'il est cense faire.
le seul probleme c'est que tu devrais.. commencer par apprendre le b.a.ba du langage C
Je te recommande "le langage C" par Kernighan et Ritchie
c'est un livre assez court et qui te permettra d'apprehender rapidement tous ces concepts sans (trop) te prendre la tete et te decourager..
LeGreg
Marsh Posté le 30-12-2002 à 20:13:57
legreg a écrit : oui il ecrit bien dans ton fichier et il fait exactement ce qu'il est cense faire. |
tai un comique toi...comme si on ne comprenais pas comment marche une fonction fodrai rapprendre le language a zero !
...jvoulais juste des explications sur comment marche cette fonction, le language C jle connais très bien
Marsh Posté le 30-12-2002 à 20:49:26
Giz a écrit : |
ca s'est vu..
LeGreg
Marsh Posté le 31-12-2002 à 15:53:33
Un peu d'aide quand meme pour ne pas reapprendre tout le langage :
(meme si une mise a jour s'impose surement )
fwrite fait des ecritures 'binaires' : tu lui demandes d'ecrire 1 dans un fichier, il ecrit un octet avec la valeur binaire 1.
Et 1 en ascii, ca ne represente rien d'affichable ...
Si par contre tu veux ecrire la representation du chiffre 1, fwrite doit ecrire la valeur ascii de 1, c'est a dire 31 en decimal.
Et c'est bien pour ca qu'on t'a conseille d'utiliser des fprintf
avec un format %d pour ecrire des int, plutot que de t'embeter
avec fwrite.
Bon courage
Marsh Posté le 31-12-2002 à 17:35:44
Giz a écrit : |
faut savoir rester modeste, sinon on perd pas mal de crédibilité, surtout quand on se vante de connaitre tres bien le C alors qu'on arrive pas a utiliser les fonctions les plus banales de ce langage (fwrite/fprintf)
Sinon, a coté de ca, pour savoir comment marche une fonction tu as l'arsenal msdn/man/google....
Marsh Posté le 31-12-2002 à 18:02:14
SVP ne me demander de :
Citation : commencer par apprendre le b.a.ba du langage C |
juste pr info,
avec le fprinf on specifie le format %d ce qui fait en effet risque de mieux marcher meme si je l'ai jamais utiliser
avec le fwrite si giz mettait
Code :
|
je me souviens plus trop si par defaut c en mode txt ou binaire si l'on met rien comme mode d'ecriture
Marsh Posté le 31-12-2002 à 18:22:32
Le mode d'écriture dans un fichier n'a rien a voir avec ça. fwrite ou fprintf font toutes les 2 la même choses. Elles envoient dans le fichiers des octets les uns après les autres et un fichier n'est rien d'autre qu'une suite d'octets !
Dans le cas de fwrite vu au début
Code :
|
On écrit dans le fichier les octets 0x01, 0x00, 0x00, 0x00
Dans le cas de
Code :
|
On écrit dans le fichier les octets 0x31, \n
La difference ascii/binaire n'a aucun effet sous Unix. Sous Windows par contre, en mode ascii, le système intercepte les caractères \n pour mettre à la place les 2 caractères \r\n dans le fichier à l'écriture et vice versa à la lecture. Note : je ne me rappelle plus exactement de quel caractères il s'agit.
C'est dur à comprendre ? C'est pas la faute aux Unix qui n'en on rien à battre de la difference ascii/binaire mais plustot la faute au DOS dans ce cas
Marsh Posté le 31-12-2002 à 22:18:00
qu'est-ce qu'il y a de mal a devoir lire un bouquin?
Est-ce une tendance generale a fuire tout ce qui
ressemble a une source possible d'amelioration?
en plus celui-la il est vraiment bien fait.
Et je l'ai lu alors que j'avais DEJA appris
le C a l'ecole et j'ai encore appris des choses..
Et une fois que le C (ou le C++)
ne te pose plus de probleme tu peux
VRAIMENT passer a autre chose.
LeGreg
Marsh Posté le 31-12-2002 à 22:25:17
Citation : C'est dur à comprendre ? C'est pas la faute aux Unix qui n'en on rien à battre de la difference ascii/binaire mais plustot la faute au DOS dans ce cas |
tu oublies les protocoles reseaux qui n'en ont pas rien a battre.
(exemple http finit toutes ses lignes par "\r\n" )
LeGreg
Marsh Posté le 31-12-2002 à 22:29:16
legreg a écrit : qu'est-ce qu'il y a de mal a devoir lire un bouquin? |
alors tu passes a koi chef
au c# ???
Marsh Posté le 31-12-2002 à 22:33:28
weed a écrit : |
mais non a ecrire des programmes qui marchent boudiou!
Si tu ecris un programme et qu'il marchote ou qu'il plante aleatoirement parce que tu ne comprends pas la moitie
de ce que tu as fait, ca veut dire qu'il faut encore s'ameliorer.
LeGreg
Marsh Posté le 02-01-2003 à 01:36:18
C'est l'étape où l'on en sait juste asser pour être dangereux...
Marsh Posté le 30-12-2002 à 18:37:18
jsé pa pkoi mais voilà ce qu'écrit ma fct fwrite(...) dans le fichier "poly2.txt": (le but est d'écrire les coordonnées des points constituant le polygone dans un fichier .txt)
(des sortes de zero tout ptit) au lieu de :
1 2
10 12
3 4
8 9
4 2
3 8
7 1
alors qu'en debuggant pas a pas, mes variables "mon_poly->p_point[i].x" et "mon_poly->p_point[i].y" sont juste et prenne bien a chaque fois une valeur (1 et 2 respectivement pour la 1ere ligne)...pkoi elles ne sécrivent pas ds mon fichier poly2.txt ?