blackgoddess vive le troll ! | 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 :
- int main(int argc, char **argv)
- {
- FILE *f;
- long pos;
- char garbage = 0;
- if(argc < 2)
- {
- fprintf(stderr, "%s <nom fichier>\n", argv[0]);
- return 1;
- }
- f = fopen(argv[1], "ab" );
- if(!f)
- {
- fprintf(stderr, "error opening %s", argv[1]);
- return 1;
- }
- pos = ftell(f);
- if(pos % 512)
- {
- /* nombre de bordel a ecrire */
- pos = 512 - (pos % 512);
- fwrite(&garbage, 1, pos, f);
- if(ferror(f))
- {
- fprintf(stderr, "error writing %s\n", argv[1]);
- return 1;
- }
- }
- fclose(f);
- return 0;
- }
|
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 :
- long i;
- for(i = 0; i<pos; ++i)
- {
- fputc(garbage, f);
- if(ferror(f))
- {
- fprintf(stderr, "error writing %s\n", argv[1]);
- return 1;
- }
- }
|
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 )-
|