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 :

problème de fgets


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut problème de fgets
    coucou,

    voilà j'ai une erreur que je n'explique pas avec un fgets

    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
    if(TableauCarte!=NULL) //allocation réussie
        {
            for(i=0;i<NbLigne;i++)
            {
                //on récupère les données
     
                printf("%s\n",fgets(buffer, MAX_CHAR, fp));
                if(fgets(buffer, MAX_CHAR, fp)==NULL);
                {
                    printf("Erreur, impossible de récupérer les infos de la carte pour la ligne: %d",i+1);
                    exit(-1);
                }
                //initialisation du 1er element de la ligne
                TableauCarte[i][0] = strtol(buffer, &endChar, 10);
                for(j=1;j<NbCol;j++)
                {
                  TableauCarte[i][j] = strtol(endChar + 1, &endChar, 10);
     
                }
            }
     
            fclose(fp);
            return TableauCarte;
        }
    le problème se trouve à ce niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    printf("%s\n",fgets(buffer, MAX_CHAR, fp));
                if(fgets(buffer, MAX_CHAR, fp)==NULL);
    en fait j'ai ajouté un printf pour voif ce que ca affiche, et là ca m'affiche ma ligne de données. Or (en enlevant mon printf) ma condition if est validée, pourtant mon fgets renvoie bien quelque chose.
    Pourquoi?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 12
    Par défaut
    Dans ton printf tu fais appel à fgets() et tu lis une ligne, dans ton 'if' tu refais appel à fgets() mais tu lis la ligne suivante.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    non...
    Or (en enlevant mon printf)

  4. #4
    Membre éclairé Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Par défaut
    Si ...
    Citation Envoyé par Arpivu
    Dans ton printf tu fais appel à fgets() et tu lis une ligne, dans ton 'if' tu refais appel à fgets() mais tu lis la ligne suivante.
    Combien vaut NbLigne ? '1' par hasard ?

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    tu as un ; tout de suite après le if...

    Donc ça ne fait ren....

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Citation Envoyé par femtosa
    Si ...
    non

    tu as un ; tout de suite après le if...
    oui désolé

    merci

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    erf j'ai toujours un souci...
    maintenant je vois plus ce qu'il y a dans le if mais ca plante


    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
        if(TableauCarte!=NULL) //allocation réussie
        {
            for(i=0;i<NbLigne;i++)
            {
                //on récupère les données
     
                //printf("%s\n",fgets(buffer, MAX_CHAR, fp))
                if(fgets(buffer, MAX_CHAR, fp)==NULL)
                {
                    printf("Erreur, impossible de récupérer les infos de la carte pour la ligne: %d",i+1);
                    exit(-1);
                }
                printf("hu");
                //initialisation du 1er element de la ligne
                TableauCarte[i][0] = strtol(buffer, &endChar, 10);
                printf("hu2");
                for(j=1;j<NbCol;j++)
                {
                  TableauCarte[i][j] = strtol(endChar + 1, &endChar, 10);
     
                }
            }
     
            fclose(fp);
            return TableauCarte;
        }

    siand je fais mon if(fgets....) il effectue bien un fgets? car apres mon souci vient de la ligne entre mon printf de "hu" et "hu2"

    voici mon endchar (sa declaration)
    mais ca vient pas de là (enfin je pense pas) car dasn un autre code semblable j'utilise ca comme ca et pas de prbolème


    EDIT : j'ai ptet une idée sur d'où peut venir le problème mais je le vois pas...

    voici quelques autres info de mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int **TableauCarte;
     
    NbLigne = strtol(buffer, &endChar, 10);//nombre de lignes du tableau...
    NbCol = strtol(endChar + 1, &endChar, 10);
     
    TableauCarte = malloc(sizeof(Ennemi)*NbLigne*NbCol);

    ca vient peut etre du malloc? pourtant si ca vient de là je devrait pas rentrer das mon code tout en haut car je teste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(TableauCarte!=NULL) //allocation réussie
    voilà...

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

Discussions similaires

  1. Probléme avec fgets
    Par Lucas42 dans le forum C
    Réponses: 2
    Dernier message: 18/11/2007, 03h08
  2. Problème avec fgets() et strlen()
    Par condor_01 dans le forum C
    Réponses: 6
    Dernier message: 28/10/2007, 12h41
  3. Problème avec fgets
    Par fabpeden dans le forum C
    Réponses: 13
    Dernier message: 15/05/2007, 10h25
  4. problème avec fgets
    Par salseropom dans le forum C
    Réponses: 1
    Dernier message: 03/08/2006, 14h54
  5. Problème avec fgets et tube...
    Par tchingoo dans le forum POSIX
    Réponses: 5
    Dernier message: 22/08/2003, 17h03

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