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 :

Probleme avec sprintf et affichage?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Par défaut Probleme avec sprintf et affichage?
    Bonjour,

    encore moi et mes questions....

    Je cherche a afficher une valeur sur un graphique que je crée.

    Cette valeur est située sur la derniere ligne d'un .txt .

    Le .txt est de la forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    0.0005   9    11   1   0   2   0   4   3   12
    0.0005  65    254  2   5   4   6   0   1   9
    5456

    Et mon code est de la forme:

    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
     
    void Drawing()
    {
    ///blablabla
    char * average ="HELLO";
     
    while(!ReadTable.eof
    	{ 
    		double Temps;
    		ReadTable>> Temps;
    		SelectObject(hdc,hp1px);
     
    		if ( ReadTable.eof())
    		{ 
    			SelectObject(hdc,hp1px);
     
    			sprintf(average, "Average of the Maximum of the Pulse:  %lf",Temps);
    			TextOut (hdc,10,650,average,lstrlen(average));
    			//TextOut (hdc,10,650,"ahahah",5);
    		}	
     
    ///blablablablabla
     
     
    	}
    	SelectObject(hdc,hpOld);
    }

    Et bien j'ai une boite de dialogue avec un gros signe : rond rouge avec croix blanche dedans.... qui dis en gros que "written" n'a pu pu etre executé sur le mémoire.. ou qqch dans le genre, j'ai traduis..

    TextOut (hdc,10,650,"ahahah",5); c'est pour faire un test... si je n'ai pas les deux lignes au dessus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sprintf(average, "Average of the Maximum of the Pulse:  %lf",Temps);
    TextOut (hdc,10,650,average,lstrlen(average));
    Si je n'ai que :

    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
     
    void Drawing()
    {
    ///blablabla
    char * average ="HELLO";
     
    while(!ReadTable.eof
    	{ 
    		double Temps;
    		ReadTable>> Temps;
    		SelectObject(hdc,hp1px);
     
    		if ( ReadTable.eof())
    		{ 
    			SelectObject(hdc,hp1px);
     
    			TextOut (hdc,10,650,"ahahah",5);
    		}	
     
    ///blablablablabla
     
     
    	}
    	SelectObject(hdc,hbrOld);
    	SelectObject(hdc,hpOld);
    }

    ca fonctionne...


    Help...

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    1/ Ce n'est pas ainsi qu'on fait des lectures: on tente la lecture et ensuite on vérifie si elle a échoué.

    La manière idiomatique, c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while (ReadTable >> Temps) {
       // lecture bien faite
    }
    // la lecture a échoué
    if (ReadTable.bad()) {
       // erreur d'IO
    } else if (ReadTable.eof()) {
       // fin de fichier -- il y a peut-être aussi une erreur de formatage,
       // mais c'est impossible à savoir
    } else {
       // erreur de formatage
    }
    2/ Utilise les stringstream plutôt que sprintf. Si tu veux utiliser sprintf, écrit dans de la mémoire allouée plutôt qu'essayer d'écraser une chaîne littérale (et attention au dépassement de capacité de la mémoire allouée; snprintf est souvent disponible et plus sûr).

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Par défaut
    Euh non mais je me suis mal exprimé peut etre... la c'est juste pour lire la derniere ligne, bien sur que apres j'ai du code qui me permet de lire les lignes les unes apres les autres et de tester si la lecture fonctionne ou pas... quand meme mais bon je ne voulais pas embrasser avec tout mon code...

    je vais aller voir stringstream et snprintf..

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Par défaut
    et bien avec snprintf j'ai comme erreur: identifier not found, even with argument-dependent lookup...

    un #include manquant?

    hum et stringstreasm j'ai essayé mais je dois pas savoir faire:

    j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    std::stringstream average;
    average << "Average of the Maximum of the Pulse:   " << Temps;
    TextOut(hdc,10,650,average.str(),15);
    Mais en fait mon parametre 4 de Textout n'est pas au bon format...

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    average.str().c_str(), puisque tu veux un const char*.

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Par défaut
    Merciiiiiiiiiiiiiiii

    ah encore un ptit soucis....je mets quoi en parametre 5 de TextOut... parceque si je mets une valeur comme 150 pour etre large... j'ai plein de signes bizarres qui apparaissent apres mon texte....

    et si je mets sizeof(average.str().c_str()), ca me donne Aver comme texte affiché...

    et si je mets sizeof(average.str()), ca me donne Average of the Maximum of th comme texte affiché...

    et si je mets sizeof(average), ca me donne mon texte plus des lettres bizarre a l'infini j'ai l'impression..

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

Discussions similaires

  1. probleme avec while e affichage
    Par grossi88 dans le forum C
    Réponses: 3
    Dernier message: 24/01/2013, 14h30
  2. probleme avec sprintf
    Par takout dans le forum C
    Réponses: 6
    Dernier message: 18/07/2012, 17h10
  3. probleme avec les charts(affichage du digramme en pdf)
    Par ergo_proxy dans le forum Jasper
    Réponses: 3
    Dernier message: 30/12/2011, 13h25
  4. probleme avec sprintf
    Par semaj_james dans le forum C
    Réponses: 5
    Dernier message: 09/12/2005, 20h07
  5. Probleme avec affichage de date
    Par Wongmaster dans le forum Access
    Réponses: 27
    Dernier message: 24/12/2004, 20h51

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