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

  FORUM HardWare.fr
  Programmation
  C

  Problème d'écriture dans un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème d'écriture dans un fichier

n°1269621
blackgodde​ss
vive le troll !
Posté le 18-12-2005 à 22:00:47  profilanswer
 

Bonjour,
 
Je veux faire un programme qui rajoute dans 0 à la fin d'un fichier, pour que sa taille soit un multiple de 512.
J'ai donc écrit le code suivant :  
 

Code :
  1. int main(int argc, char **argv)
  2. {
  3. FILE *f;
  4. long pos;
  5. char garbage = 0;
  6. if(argc < 2)
  7. {
  8.  fprintf(stderr, "%s <nom fichier>\n", argv[0]);
  9.  return 1;
  10. }
  11. f = fopen(argv[1], "ab" );
  12. if(!f)
  13. {
  14.  fprintf(stderr, "error opening %s", argv[1]);
  15.  return 1;
  16. }
  17. pos = ftell(f);
  18. if(pos % 512)
  19. {
  20.  /* nombre de bordel a ecrire */
  21.  pos = 512 - (pos % 512);
  22.  fwrite(&garbage, 1, pos, f);
  23.  if(ferror(f))
  24.  {
  25.   fprintf(stderr, "error writing %s\n", argv[1]);
  26.   return 1;
  27.  }
  28. }
  29. fclose(f);
  30. return 0;
  31. }


 
Seulement, au lieu de m'écrire des 0, il écrit n'importe quoi dans le fichier.
 
J'ai donc remplacé le  
fwrite(&garbage, 1, pos, f);
par  

Code :
  1. long i;
  2.  for(i = 0; i<pos; ++i)
  3.  {
  4.   fputc(garbage, f);
  5.   if(ferror(f))
  6.   {
  7.    fprintf(stderr, "error writing %s\n", argv[1]);
  8.    return 1;
  9.   }
  10.  }


et la, ca fonctionne.
Je ne comprends pas pourquoi ca ne fonctionne pas avec write ? ai-je mal utilisé utilisé cette fonction ?
Je suis sur PC sur RedHat 9.
Merci de m'éclairer :)


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 18-12-2005 à 22:00:47  profilanswer
 

n°1269638
Profil sup​primé
Posté le 18-12-2005 à 23:17:32  answer
 

Tu lui files un pointeur sur un char et tu lui dis d'aller chercher tes ~512 éléments à la suite de ce pointeur, c'est à dire n'importe où dans la mémoire excepté peut-être pour le premier caractère.

n°1269659
blackgodde​ss
vive le troll !
Posté le 19-12-2005 à 01:08:13  profilanswer
 

rolala oui suis-je bete ... j'avais oublié que c'etait par exemple pour passer un tableau en paramètre, et count indique le nombre d'éléments du tableau ... honte sur moi :p


---------------
-( BlackGoddess )-
n°1270484
Taz
bisounours-codeur
Posté le 20-12-2005 à 09:43:16  profilanswer
 

regarde directement le retour de ton fputc.
tu peux faire ça sans boucle avec un
 
char garbage[511] = "";
fwrite(garbage, 1, n, out);


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

  Problème d'écriture dans un fichier

 

Sujets relatifs
[php] probleme avec ecriture de fichierprobleme d ecriture dans un fichier
Probleme d'écriture dans un fichier[c/c++] petit probleme d'ecriture dans un fichier
petit probleme d'ecriture dans un fichierproblème pour ecriture de résultat dans un fichier text
probleme d ecriture dans un fichierprobleme ecriture fichier
Problème de noob ecriture/lecture fichier texteProblème écriture dans fichier texte
Plus de sujets relatifs à : Problème d'écriture dans un fichier


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