[C] problème de détection de fin de fichier

Résolu/Fermé
dji - 13 déc. 2006 à 01:19
 dji - 13 déc. 2006 à 23:51
Bonjour,


Le fichier toto.txt contient :
1 2
1 3
1 4
1 5
1 6

avec normalement la fin du fichier (édité avec emacs) juste après le chiffre 6. Mon but étant juste de réecire dans la console ce qu'il y a dans ce fichier.

voici un bout de mon prgramme :

char c1;
FILE *pfic;
int i=0;
pfic=fopen(toto.txt,"r");
while(pfic!=NULL){
if(i<25){
c1=fgetc(pfic);
printf("%c",c1);
if(pfic==NULL){
printf("detection de fin de fichier ");
}
i++;
}
else{exit(-1);}
}

En exécutant le prgramme j'obtiens le resulat suivant :
1 2
1 3
1 4
1 5
1 6�����

Je n'arrive pas à détecter la fin de fichier... et je ne comprends vraiment pas pourquoi? :/

Si vous avez une explication elle sera apréciée :)
Merci d avance ;)

4 réponses

hmm désolé pour la présentation du source ... c'est abusé que toutes mes indentation aient été bouffées ;p
bon juste pour vous "facilitez" la lecture du programme je refais une présentation custom ;) :

char c1;
FILE *pfic;
int i=0;
pfic=fopen(toto.txt,"r");
while(pfic!=NULL){
-----if(i<25){
----------c1=fgetc(pfic);
----------printf("%c",c1);
----------if(pfic==NULL){
-----------------printf("detection de fin de fichier ");
----------}
----------i++;
------}
------else{exit(-1);}
}
2
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
13 déc. 2006 à 07:27
Salut,

ce n'est pas NULL que tu dois utiliser mais EOF(EndOfFile)
 if(c1==EOF)
regarde ici lire et écrire dans des fichiers
1
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 329
13 déc. 2006 à 08:47
salut. moi j'utilise aussi la fonction
bool feof(FILE*);
c'est pas mal aussi pour détecter la fin d'un fihchier.
En fait, à chaque foi que tu li dans ton FILE* la variable est modifié pour pointer sur le caractère suivant, cette fonction détecte quand tu pointe sur la fin du fichier.
1
Merci à vous lami20j et Char Snipeur. Grace à vous j'ai corrigé et ça fonctionne nickel.
Thx ^^
0