Bonjour
Je dois copier le contenu d'un fichier dans un autre, puis padder (remplir à blanc) jusqu'à un certain point si le fichier n'y arrive pas (ici 0x1C000 en hexa).
Malgré la condition dans la boucle, et ayant vérifié qu'apres la copie du fichier on ne soit toujours pas en 0x1C000, en lisant mon fichier binaire avec un decodeur hexa, je remarque que j'ecris 3octets en trop! j'ai retourné le probleme dans tous les sens mais rien à faire.
Je me demande alors si le problème ne vient pas des fonction fput / fget !
Si vous avez un idée, je suis preneur. merci
nb: j'ai rajouté des fflush de partout au cas ou... mais ca ne change rien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 fdd = fopen(".\\SVDP.32X", "w"); //ouverture en ecriture fds = fopen("SVDP_68K.bin", "r"); //ouverture en lecture seule if (!(fds && fdd)) { exit(0); } /*--------------Copie du 68k-------------*/ fflush(fds); while (!feof(fds)) { value = fgetc(fds); if (value != EOF) { value = fputc(value, fdd); padding++; if (value == EOF) { fprintf(stderr, "\nProbleme d'ecriture\n"); exit(-1); } } } fclose(fds); printf("padding = %d\n", padding); // je vérifie qu'on soit avant 0x1C000, c'est le cas fflush(fdd); while(padding<0x1C000){ value= fputc(' ',fdd); padding++; if (value == EOF) { fprintf(stderr, "\nProbleme d'ecriture\n"); exit(-1); } }
Partager