Rechercher : dans
Par :

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

Dernière réponse le 13 déc 2006 à 23:51:29 dji, le 13 déc 2006 à 01:19:39 
 Signaler ce message aux modérateurs

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

Configuration: Linux
Firefox 2.0

Meilleures réponses pour « [C] problème de détection de fin de fichier » dans :
Entrées/sorties : Les flux en C++ VoirEntrées/sorties : les flux en C++ 1. Ouvrir un fichier en lecture 1.1 Ouverture du fichier "donnees.txt" en lecture 1.2 Lecture du contenu de "donnees.txt" 2. Ouvrir un fichier en écriture 2.1 Ouverture du fichier "donnees.txt" en...
[Windows] Obtenir la liste des fichiers d'un dossier VoirLister le contenu d'un dossier Voici une astuce simple qui permet de lister le nom des fichiers contenus dans un répertoire. Vous pourrez obtenir en un clic les titres de vos chansons, de vos photos, etc. dans un fichier...
[Shell] Créer un fichier vide VoirPour créer un fichier vide, il vous suffit de taper la commande suivante : > fichier Vous pouvez également utiliser la commande touch : touch fichier
Ouverture d'un fichier VoirOuverture d'un fichier existant crée avec le même logiciel Il existe fondamentalement deux méthodes pour ouvrir un fichier sous Windows : Choisissez dans le menu du logiciel concerné Fichier > Ouvrir et naviguez jusqu’au fichier concerné dans la...

1

dji, le 13 déc 2006 à 01:25:49

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

Répondre à dji

2

lami20j, le 13 déc 2006 à 07:27: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 lami20j

Répondre à lami20j

3

Char Snipeur, le 13 déc 2006 à 08:47:21

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. Salutation !
Char Snipeur

Répondre à Char Snipeur

4

 dji, le 13 déc 2006 à 23:51:29

Merci à vous lami20j et Char Snipeur. Grace à vous j'ai corrigé et ça fonctionne nickel.
Thx ^^

Répondre à dji