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 :

segfault fgets() lecture fichier


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 34
    Points : 25
    Points
    25
    Par défaut segfault fgets() lecture fichier
    bonjour, j'ai un segfault sur fgets() et je ne voit pas du tout pourquoi. voila 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
     
    void    parse_file(char *file)
    {
        char    *title;
        char    *value;
        char    *line;
        char    buff[4096];
        FILE    *f;
        int     c;
        int     c_buff;
     
        c = 0;
        c_buff = 0;
        if  ((line = malloc(MALLOC_LINE * sizeof(char))) == NULL)
            exit(0);
        if ((title = malloc(MALLOC_TITLE * sizeof(char))) == NULL)
            exit(0);
        if ((value = malloc(MALLOC_VALUE * sizeof(char))) == NULL)
            exit(0);
        f = fopen(file, "r");
        if (f == NULL)
            {
                printf("impossible d'ouvrir le fichier\n");
                Sleep(1000);
                csv_to_sql();
            }
        while (fgets(buff, 4096, file) != NULL)
        {
              printf("test");
               ...
         }
    Si quelqu'un a une idée car moi je ne voit pas du tout comment il peut segfault. Je precise que le fichier sur lequel je teste actuellement contient 4 lignes de 20 caractères donc ce n'est pas la taille du buffer qui est en cause.

    merci de votre aide

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    bon ok j'ai finalement trouvé, je suis un boulet... dans mon fgets j'ai mit file qui est le nom du fichier, a la place de f qui est le FILE *.

    enfin je ne comprend pas comment gcc peut compiler avec un char * a la place d'un FILE *...

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    C'est bizarre effectivement! Avec un -Werror et -pedantic-error ça ne devrait pas compiler. Surtout avec le Werror vu que les erreurs de casting sont dans la plupart des cas du niveau warning!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lecture fichier : fgets et accents...
    Par Force_Rouge dans le forum C
    Réponses: 19
    Dernier message: 28/03/2006, 14h19
  2. [ifstream] pb lecture fichier non sequentielle
    Par bludo dans le forum SL & STL
    Réponses: 3
    Dernier message: 10/02/2005, 21h30
  3. [LG]probleme lecture fichier
    Par yp036871 dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2004, 19h22
  4. [LG]Probleme lecture fichier file of ....
    Par John_win dans le forum Langage
    Réponses: 11
    Dernier message: 11/11/2003, 18h53
  5. [langage] prob lecture fichier .txt
    Par martijan dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2003, 11h08

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