Un4GivN a écrit a écrit :
C'est correct je l'ai eu ! Simple petite erreur de logique
while(feof(pfichier) == 0)
{
c = fgetc(pfichier);
fputc(c, pfichier2);
}
|
(once again)
quelque part à l'intérieur de l'OS, il y a un flag dans les descripteurs de fichier qui est positionné non pas quand on est à la fin du fichier, mais quand on a essayé de lire en dehors du fichier (pas pareil, madame, goûtez... ben, non, pas le même goût...)
la fonction feof, elle fait juste que tester ce flag. moralité : il faut essayer de lire, tester et passer à la suite.
c = fgetc(pfichier);
while(!feof(pfichier))
{
fputc(c, pfichier2);
c = fgetc(pfichier);
}
avec ton prog, si tu es sur une machine à complément à 2 (t'es sur wintel ? => t'es en complément à 2) et si tu utilises un char pour c, alors ton fichier cible devait comporter un octet supplémentaire (un caractère de code ASCII 255).
je sais pas vous, mais dans ton cas, j'utiliserai pas le feof puisque fgetc te donne déjà l'information EOF. mais dans ce cas, il ne faut pas oublier de mettre c en int :
int c;
c = fgetc(pfichier);
while( c != EOF )
{
fputc(c, pfichier2);
c = fgetc(pfichier);
}
ok, j'avoue, j'suis rien qu'un intégriste, je ne recommencerai pas... promis
Mogi.