[C] fgetc, fputc... HLp Svp

fgetc, fputc... HLp Svp [C] - Programmation

Marsh Posté le 10-12-2001 à 23:43:23    

FILE *pfichier, *pfichier2;
....
while(!eof(pfichier))
{
   c = fgetc(pfichier);
   fputc(c, pfichier2);
}
Lors de la compilation le prog ne passe pas dans le while. QUelqu'un a une idée ?

Reply

Marsh Posté le 10-12-2001 à 23:43:23   

Reply

Marsh Posté le 11-12-2001 à 04:55:57    

Oui, probablement ton fichier n'est pas ouvert.
au fait, eof()... Y'a pas feof() dans les librairies de ton compilo? c'est plus standard, feof().
A+,

 

[edtdd]--Message édité par gilou--[/edtdd]


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 11-12-2001 à 10:02:13    

essaye ce code:
FILE *p_in,*p_out;
p_in=fopen("monfichier","rt" );
p_out=fopen("fichier_sortie","wt);
while(!feof(p_in))
{
 c=fgetc(p_in);
 fputc(c,p_out);}
fclose(p_in);
fclose(p_out);


---------------

Reply

Marsh Posté le 11-12-2001 à 13:37:53    

C'est correct je l'ai eu ! Simple petite erreur de logique :ange:
 
while(feof(pfichier) == 0)
{
    c = fgetc(pfichier);
    fputc(c, pfichier2);
}

Reply

Marsh Posté le 12-12-2001 à 08:29:03    

Un4GivN a écrit a écrit :

C'est correct je l'ai eu ! Simple petite erreur de logique :ange:
 
while(feof(pfichier) == 0)
{
    c = fgetc(pfichier);
    fputc(c, pfichier2);
}  




 
:non: (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 :crazy:
 
Mogi.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed