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 avec tellg()


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Points : 13
    Points
    13
    Par défaut Problème avec tellg()
    Bien le bonjour,

    Voici deux bouts codes, pratiquement identique.
    Le premier fonctionne (il est mignon tout plein)
    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 f_lit_les_entrees_du_dico (vector <c_objet_dico> & to_entree_dico)
    {
        ifstream fichier ("dico.txt", ios::in);
     
        string s_ligne;
        string s_ligne_precedente;
     
        if (fichier) 
        {     
              while (getline (fichier, s_ligne))       
              {   
                   if (s_ligne_precedente == ".....")
                   {   
                        c_objet_dico nouveau_mot;
                        nouveau_mot.s_mot_dico = s_ligne;
                        nouveau_mot.en_position = fichier.tellg();
                        to_entree_dico.push_back (nouveau_mot);
                   }
                   s_ligne_precedente = s_ligne;
              }    
     
        }
        else
        {
            cerr << "Impossible de lire les definitions" << endl;
            cerr << "f_lit_les_entrees_du_dico" << endl;
        }
     
        fichier.close ();
    }
    Le deuxième est une horrible fonction qui fait rien que de m'embêter.

    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
     
    void f_lit_les_entrees_du_dico (vector <c_objet_dico> & to_entree_dico)
    {
        ifstream fichier ("dico.txt", ios::in);
     
        string s_ligne;
        string s_ligne_precedente;
     
        if (fichier) 
        {     int g = 0;
              while (getline (fichier, s_ligne))       
              {   
                   if (s_ligne_precedente == ".....")
                   {   
                        c_objet_dico nouveau_mot;
                        nouveau_mot.s_mot_dico = s_ligne;
                        nouveau_mot.en_position = g;
                        to_entree_dico.push_back (nouveau_mot);
                   }
                   g = fichier.tellg();
                   s_ligne_precedente = s_ligne;
     
              }    
     
        }
        else
        {
            cerr << "Impossible de lire les definitions" << endl;
            cerr << "f_lit_les_entrees_du_dico" << endl;
        }
     
        fichier.close ();
    }
    Question: Pourquoi ? oui pourquoi la deuxième fonction plante le programme. La seule chose qui se passe en plus c'est que j'utilise la variable g pour enregistrer tellg (), et qui sert ensuite à initialiser nouveau_mot.en_position.

    Dubitatif je suis !

    Bien à vous.

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 59
    Points
    59
    Par défaut
    J'ai testé tes fonctions en local, elles fonctionnent toute les deux. Cela viens certainement d'une autre partie de ton code. En tout cas je n'ai pas d'erreur sur ce programme*: http://codepad.org/KgVkQxfA avec g++4.2.1.

    PS*: les std:: en trop, c'est l'habitude désolé. :)

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Re-salut

    merci de ta réponse.
    J'ai testé ton code et a première vue la seconde fonction fait toujours sa difficile.
    Mon compilateur l'aime pas, à moins que ce soit seven ou bien dev c++.
    Quoi qu'il en soit je verrais cela demain car pour l'instant je regarde Sharapova mettre une branlée à Rezaï. Quel match ennuyeux et en plus j'ai bu une mauvaise bière. A moins que cela soit une bonne bière mais que je n'aime pas.
    Sur ce morceau de philosophie je vous souhaite une bonne nuit.

    a+

    ps : Sharapova_Rezaï 6-2 6-2

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par Pifpafboum Voir le message
    à moins que ce soit seven ou bien dev c++
    DevC++ est obsolète, je te conseille de lui préférer : Code::blocks, ou bien Eclipse CDT, ou encore Visual Studio 2010 Express (gratuit).
    Find me on github

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Salut

    J'ai un faible pour dev c++. J'aime pas Code block. Jamais compris comment cela marchait. Faudra que j'essaye les autres. Mais j'ai quand même un faible pour dev c++.
    Bien bien comme ce n'est pas le code qui pose problème je peux dire que c'est résolu.
    Merci pour l'aide.

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par Pifpafboum Voir le message
    J'ai un faible pour dev c++. J'aime pas Code block.
    Je peux te comprendre, moi aussi j'ai du mal avec Code::blocks. Mais continuer à utiliser un logiciel outdaté ne pourra t'apporter que des ennuis !
    Find me on github

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

Discussions similaires

  1. Problème de position avec tellg()
    Par MoonDragon dans le forum Débuter
    Réponses: 2
    Dernier message: 09/08/2011, 15h02
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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