Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1273 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] problème avec la fonction fwrite(...)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] problème avec la fonction fwrite(...)

n°277600
Giz
Posté le 30-12-2002 à 18:37:18  profilanswer
 

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 ?  :??:  

Code :
  1. void ecriture(polygone *mon_poly, int nb_points)
  2. {
  3. int i;
  4. char sep[1];
  5. int tampon[1];
  6. FILE *fd;
  7. fd = fopen("poly2.txt", "w" );
  8. for(i=0;i<nb_points;i++)
  9. {
  10.  tampon[0] = mon_poly->p_point[i].x;
  11.  fwrite((int*)tampon, sizeof(int), 1, fd);
  12.  printf("point[i].x = %d\n", mon_poly->p_point[i].x);
  13.  sep[0] = ' ';
  14.  fwrite((char*)sep, sizeof(char), 1, fd);
  15.  tampon[0] = mon_poly->p_point[i].y;
  16.  fwrite((int*)tampon, sizeof(int), 1, fd);
  17.  printf("point[i].y = %d\n", mon_poly->p_point[i].y);
  18.  sep[0] = '\n';
  19.  fwrite((char*)sep, sizeof(char), 1, fd);
  20. }
  21. fclose(fd);
  22. return;
  23. }

mood
Publicité
Posté le 30-12-2002 à 18:37:18  profilanswer
 

n°277604
Profil sup​primé
Posté le 30-12-2002 à 18:46:00  answer
 

pq tu fais des casts dans tes fwrite?  :??:

n°277607
Kristoph
Posté le 30-12-2002 à 18:51:43  profilanswer
 

Ca te dirais pas d'utiliser plustot fprintf ? fwrite c'est pour les ecritures binaires en general.

n°277627
Giz
Posté le 30-12-2002 à 19:24:19  profilanswer
 

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  :sweat:

n°277630
Giz
Posté le 30-12-2002 à 19:33:43  profilanswer
 

Kristoph a écrit :

Ca te dirais pas d'utiliser plustot fprintf ? fwrite c'est pour les ecritures binaires en general.


 
tout a fait  :jap:  
Merci !
 
...mais pkoi fwrite ne fait pas, j'aimerais bien savoir :/, c bien son but d'écrire ds un fichier :/

n°277640
LeGreg
Posté le 30-12-2002 à 20:10:44  profilanswer
 

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


---------------
voxel terrain render engine | animation mentor
n°277644
Giz
Posté le 30-12-2002 à 20:13:57  profilanswer
 

legreg a écrit :

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


 
 [:schumacher] tai un comique toi...comme si on ne comprenais pas comment marche une fonction fodrai rapprendre le language a zero !  :lol:  
...jvoulais juste des explications sur comment marche cette fonction, le language C jle connais très bien :)

n°277680
LeGreg
Posté le 30-12-2002 à 20:49:26  profilanswer
 

Giz a écrit :


le language C jle connais très bien :)


 
ca s'est vu..
 
LeGreg


---------------
voxel terrain render engine | animation mentor
n°277845
vorpal66
Posté le 31-12-2002 à 15:53:33  profilanswer
 

Un peu d'aide quand meme pour ne pas reapprendre tout le langage :
(meme si une mise a jour s'impose surement  :D  )
 
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  :sol:  

n°277894
chrisbk
-
Posté le 31-12-2002 à 17:35:44  profilanswer
 

Giz a écrit :


 
 [:schumacher] tai un comique toi...comme si on ne comprenais pas comment marche une fonction fodrai rapprendre le language a zero !  :lol:  
...jvoulais juste des explications sur comment marche cette fonction, le language C jle connais très bien :)


 
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....

mood
Publicité
Posté le 31-12-2002 à 17:35:44  profilanswer
 

n°277906
weed
Posté le 31-12-2002 à 18:02:14  profilanswer
 

SVP ne me demander de :

Citation :

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..  


 
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 :
  1. fd = fopen("poly2.txt", "wt" );


 
je me souviens plus trop si par defaut c en mode txt ou binaire si l'on met rien comme mode d'ecriture  

n°277917
Kristoph
Posté le 31-12-2002 à 18:22:32  profilanswer
 

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 :
  1. fwrite((int*)tampon, sizeof(int), 1, fd);


 
On écrit dans le fichier les octets 0x01, 0x00, 0x00, 0x00
Dans le cas de

Code :
  1. fprintf(fd, "%d", tampon);


 
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 :D

n°277935
LeGreg
Posté le 31-12-2002 à 22:18:00  profilanswer
 

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


---------------
voxel terrain render engine | animation mentor
n°277936
LeGreg
Posté le 31-12-2002 à 22:25:17  profilanswer
 

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 :D


 
tu oublies les protocoles reseaux qui n'en ont pas rien a battre.
(exemple http finit toutes ses lignes par "\r\n" )
 
LeGreg


Message édité par LeGreg le 31-12-2002 à 22:26:27

---------------
voxel terrain render engine | animation mentor
n°277937
weed
Posté le 31-12-2002 à 22:29:16  profilanswer
 

legreg a écrit :

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


alors tu passes a koi chef  :jap:  
au c# ???

n°277938
LeGreg
Posté le 31-12-2002 à 22:33:28  profilanswer
 

weed a écrit :


alors tu passes a koi chef  :jap:  
au c# ???


 
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


---------------
voxel terrain render engine | animation mentor
n°278196
Musaran
Cerveaulté
Posté le 02-01-2003 à 01:36:18  profilanswer
 

C'est l'étape où l'on en sait juste asser pour être dangereux...


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] problème avec la fonction fwrite(...)

 

Sujets relatifs
[sous débutant] problème avec prg (résolut )[VISUAL C++ 6]Probleme de try .. catch
Fonction inverse de chr() ???j'ai un probleme bizarre avec mon programme qui lit dans un fichier
[JAVASCRIPT] Popup en JS, tout petit probleme: pliz helppourquoi ma fonction d'1 ligne marche pas
[PHP&SQL] Problème avec php-forge2[SQL Server] Probleme MS SQL Server sous Win XP
problème avec la commande eval [shell de Bourne]Problème d'upload : getimagesize()
Plus de sujets relatifs à : [C] problème avec la fonction fwrite(...)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR