Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2585 connectés 

 


Dernière réponse
Sujet : [C] Fichiers et EOF
End-i pour lire un fichier jusqu'à la fin je fais toujours:
 
while (!feof(Fichier))
{
   fgets(...
   ...
}
 
je sais pas si ca peut t'aider mais bon....

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
End-i pour lire un fichier jusqu'à la fin je fais toujours:
 
while (!feof(Fichier))
{
   fgets(...
   ...
}
 
je sais pas si ca peut t'aider mais bon....
Evadream -jbd- Je note tout ca, et je vois ca demain :)
Je suis trop mort.
 
Bonne nuit @ tous !
BifaceMcLeOD Je dirais que normalement, le fait de fermer le fichier ajoute ce qu'il faut pour qu'il y ait une fin de fichier. Donc ferme ton fichier d'abord, puis rouvres-le en lecture seule ensuite.
 
Evadream> Juste pour le style... De façon abstraite, une fonction endOfFile() doit renvoyer un booléen. En C, c'est parce qu'il n'y a pas de type booléen que feof() renvoie un entier. Mais dans ton code, c'est plus joli d'écrire "while (!feof(file)) ..." que "while (feof(file) == 0) ...".
 
Et puis "FILE* nom", ça fait un peu bizarre. Parce qu'en voyant une variable qui s'appelle "nom", j'aurais plutôt dit que c'était une variable de type string... (qui contenait un nom, quoi)
Evadream -jbd- feof retourne zero lorsque la fin de fichie n'est pas atteinte.
 
Mais avec fprintf, le caractere de fin de chaine n'est pas rajouté.
wouatouwouatou bon, plus serieusement...
Le caractere de fin de fichier 'EOF', bah... c pour simplifier une sorte de flag ki se met a true qd tes a la fin du fichier... t'a pas a le gerer ...
 
Dans mes souvenirs, une condition en C est vrai si elle vaut zero, non ?
donc, en principe ta boucle bah.. elle sert pas a grd chose ici... puisque tu ecris qqchose dans ton fichier...
En d'autres termes, tu rentres jamais dedans !!!
Et si ton fichier est vide, ben elle devient une boucle infinie !!!! Tu vois le truc ?!
Bref, fo voir ce ke te retourne le feof()...
Il me semble kelle te retourne vrai si tes en fin de fichier (FileEndOfFile) et fo sinon...
Donc change ta condition du while pour voir...
wouatouwouatou le caractere de fin de fichier... tu peux pas le rajouter... :lol:
Evadream -jbd- Je dis que je n'ai pas de caractere de fin de fichier car je boucle à l'infini ds ma fonction listing.
Evadream -jbd- Bonsouaaaaaar tout le monde, me revoila avec cette fois si un soucis avec les fichiers. Voici le code :
 
#include<stdio.h>
#include<alloc.h>
#include<string.h>
#include<conio.h>
 
 
void listing (FILE* nom);
 
void main()
 {
   FILE*   fichier;
   int     i=0,j=0;
   char*   nom_fichier = (char*)malloc(sizeof(char));
   char    chaine[255];
   long    curpos;
 
 
 
   printf("Nom du fichier : \n\n" );
   gets(nom_fichier);
 
   fichier = fopen(nom_fichier,"w" ); // on ouvre le fichier
 
   if ( fichier == NULL ) printf("\nErreur de création du fichier %s ", nom_fichier);
 
   while ( j <= 4 )
    {
      highvideo();
      cprintf("\nEntrer une chaine de caractere quelconque :\n" );
      gets(chaine);
      fprintf(fichier,"%s\n",chaine);
      j++;
      }
 
   fputc(26,fichier); // la je rajoute pas EOF ?
   listing(fichier);
   fclose(fichier); // on ferme le fichier
 
   }
 
 
void listing (FILE* nom)
 {
   char rep;
 
   while ( feof(nom) == 0 )
    {
      rep = fgetc(nom);
      printf("%c",rep);
      }
   }
 
Je ne comprends pas pourquoi je n'ai pas de caractere de fin de fichier, pourtant je le rajoute non ?

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)