IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Pas de EOF d�tect� ! Stack overflow !


Sujet :

C

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    34
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 34
    Par d�faut Pas de EOF d�tect� ! Stack overflow !
    Bonjour,

    Je n'arrive pas � faire un simple comptage de ligne d'un fichier CSV.
    Cela tourne en boucle jusqu'� l'erreur "Stack overflow" ! Je ne comprends pas pourquoi.
    Est-il possible que l'EOF ne soit pas pr�sent dans mon fichier ?

    Voici mon code:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    long getCSVNbLines(FILE * file)
    {
        long lignei = 0;
     
        if (file != NULL)
        {
            //while ((getc(file)) != EOF) {
            while (!feof(file))
            {
                if ((getc(file)) =='\n')
                {
                    lignei++;
                }
            }
            printf("Nombre de ligne du fichier: %d\n", lignei+1);
        }
        else
        {
            printf("ERROR: Le fichier est impossible à ouvrir !\n");
            printf("Code erreur %d \n", errno);
            return(0);
        }
        return (lignei);
    }
     
    int main (void)
    {
        char monFichier[]="InputData1.csv";
        FILE * file  = NULL;
        long nbLignes = 0;
     
        // Ouverture du fichier CSV
        file = fopen (monFichier, "r");
     
        // Calcul du nombre de ligne du fichier ouvert
        nbLignes = getCSVNbLines(file);
     
        // Fermeture du fichier ouvert
        fclose (file);
    }
    Quelqu'un a-t-il une id�e ?...

    Voici un exemple du contenu du fichier InputData1.csv:

    0,99112756;0,000123995;0,000143696;0,000061779
    0,997749815;0,00003449;0,000035545;0,00001785
    1;0;0;0
    1;1
    1,5;1
    0;1
    95;0,973
    105;0,976

  2. #2
    Mod�rateur

    Avatar de Bktero
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par d�faut
    Bonjour,

    Pour commencer, voir la : http://c.developpez.com/faq/?page=es_general#ES_feof

    Ensuite, chez moi �a fonctionne tr�s bien, donc je ne peux pas dire grand chose.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    34
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 34
    Par d�faut
    Oui en fait, j'ai compris pourquoi �a plantait...
    Le code est bon. Ce que je n'ai pas dit c'est qu'en r�alit� apr�s ce code de comptage du nombre de lignes, j'effectue d'autres traitements du fichier ouvert.
    EVidemment, j'avais oubli� de remettre au d�but la t�te de lecture du fichier !
    Il manque donc, apr�s mon comptage de lignes, la ligne suivante:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    	   // Se placer au début du fichier
    	   //fseek(MP_FILE, 0L, 0);
    	   rewind(file) ; // Avantage: appel de clearerr() pour la remise à nul de l'indicateur d'erreur.
    Voil� ! Au moins �a servira � d'autres !

    Merci pour ton aide en tout cas, Bktero, et d�sol� du d�rangement !

  4. #4
    Mod�rateur

    Avatar de Bktero
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par d�faut
    Quel cachotier... En tout cas tu as bien prouv� qu'il ne faut pas faire une boucle en testant feof().

    Tu peux maintenant cliquer sur en bas de la page.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [GNU-Prolog][M�moire] Local stack overflow
    Par Maxoo dans le forum Prolog
    R�ponses: 15
    Dernier message: 04/06/2008, 22h15
  2. stack overflow: question insoluble
    Par coyotte507 dans le forum SDL
    R�ponses: 3
    Dernier message: 19/12/2006, 17h50
  3. Stack OverFlow
    Par Goundy dans le forum Langage
    R�ponses: 2
    Dernier message: 24/12/2005, 21h35
  4. Probl�me de stack overflow
    Par heider dans le forum Langage
    R�ponses: 13
    Dernier message: 22/09/2005, 19h50
  5. Stack overflow
    Par portu dans le forum Langage
    R�ponses: 3
    Dernier message: 26/11/2003, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo