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

Bibliothèque standard C Discussion :

probleme tableau c, fgets


Sujet :

Bibliothèque standard C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 24
    Par défaut probleme tableau c, fgets
    Bonjour,

    voila mon probleme.Je n'arrive pas à remplir un tableau de manière constante, je m'explique. Je rempli mais le premier indice ne garde pas sa valeur. tab1[i] a la même valeur partout.

    Je doit avoir un probleme avec les pointeurs, mais je ne suis pas un specialiste du c donc ca me passe au dessus de la têtet depuis quelques heures.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    char temp [10],temp2[10];
    int tab1[50],tab2[50];
     
    while (!feof(fichier)){
    fgets (temp, 10,fichier);
    tab1[i]=temp;
    fgets (temp2, 10,fichier);
    tab2[i]=temp2;
    i=i++;
    }
    j'ai abrégé le code en gardant ce qui pose probleme,

    merci de vos reponses

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    i=i++;
    Comportement indéfini: Deux modifications de i dans la même séquence.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 24
    Par défaut
    tout d'abord merci de la reponse,

    merci... mais je ne vois pas ce que ca veux dire. i=i++; c'est dans la boucle et justement pour changer l'indice à chaque tour de boucle. Je n'y touche qu'une fois par tour.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 24
    Par défaut
    OK après recherche sur la reponse que j'ai eu sur le c je crois que i=i++ n'existe pas en c. i++ doit suffire.

    merci de la reponse ca m'a mis sur la bonne voie je crois.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    i = i++ cause deux modifications, donc peut avoir deux comportement possibles.
    Soit le code est équivalent à ceci, qui fait ce que tu veux:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int __tmp1 = i;
    i = __tmp1;
    i++;
    Soit il est équivalent à ceci, qui donne ton bug:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int __tmp1 = i;
    i++;
    i = __tmp1;
    En clair, le i++ est garanti ne se faire qu'après le __tmp1 = i, mais selon le standard, il peut être aussi bien avant le i = __tmp1 qu'après.
    Résultat, cela dépend du compilo.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 24
    Par défaut
    et non ca ne marche pas

    bon je remet le code avec les test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	int i=0;
     
    	while (!feof(fichier)){	
    		fgets (temp, 10,fichier);		
    		tab1[i]=temp;
    		puts (tab1[i]);					
    		fgets (temp2, 10,fichier);		
    		tab2[i]=temp2;		
    		i++;
    	}
    	puts (tab1[0]);
    	puts (tab1[1]);
    	puts (tab1[2]);
    ceci avec les declaration que j'ai mis auparavant.

    voila ce que me donne le l'execution

    1000

    1001

    1002

    1002

    1002

    1002

    1002
    alors que je m'attend plutot à
    1000
    1001
    1002
    1000
    1001
    1002
    en effet les valeurs recupérées et censées être stockées dans le tableau sont 1000, 1001, et 1002

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

Discussions similaires

  1. probleme : tableau & mise en forme
    Par grumly22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 03/04/2006, 22h53
  2. [Conception] problème tableau 2 dimensions
    Par Tootsi dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 24/01/2006, 18h55
  3. probleme tableau
    Par semaj_james dans le forum C
    Réponses: 3
    Dernier message: 24/11/2005, 11h55
  4. [Tableaux] Probleme tableau
    Par chocobos dans le forum Langage
    Réponses: 3
    Dernier message: 10/09/2005, 11h34
  5. [C++] Probleme tableau
    Par yanndublanche dans le forum C++
    Réponses: 9
    Dernier message: 21/10/2004, 16h42

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