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);
			}
	}