Déconcertant ! :(

Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
- - Dernière réponse : cs_Zeroc00l
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
- 7 août 2003 à 22:58
-={[ Zeroc00l ]}=-

Bon j'ai apris recement a faire du C++

cout affiche du texte une fois inclus iostream.h
scanf recupere des valeur saisie a l'ecran ..

Probleme 1)

Pk sous VC++ 6 :

#include
#include <stdio.h>

int main ()
{
float valeur1, valeur2, valeur3;

cout << "entrez 3 valeurs : ";
scanf ("%f%f%f", &valeur1, &valeur2, &valeur3);
int i;
cin >> i;
return 0;
}

ne Marche pas ?
je ne vois pas la chaine "entrez 3 valeurs : "

Probleme 2)
Cependant si j' enleve :
#include <stdio.h> et le scanf(...)
la chaine s'affiche !!!!!!!!!!!

Probleme 3)
Maintenant si j'execute le probleme 2 Pas a pas (F10)
lorsque je passe sur cout et l'execute, rien n'est affiché !!! C'est seulement une fois que le cin st execute que le cout fonctionne !!!!

KKun a une explication Rationnelle a tout ceci ! je ne comprend pk cela n'affiche pas la chaine alors que gramaticalement c'ets ce qu'on m'a appris dans un bouquin de C++

J'attend vos reponse avec impatience !
MERCI d'avance.

-={[ ZeroCool (qui va bientot peter un cable) :( ]}=-
Afficher la suite 

8 réponses

Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
0
Merci
Ben pete pas trop de cable sur cres antiquites qui n'ont plus aucun interet. A part pour faire un compilo ou une console admin, on ne fait plus aucun prog de ce type depuis 10 ans.
BruNews, ciao...
Commenter la réponse de BruNews
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
0
Merci
le but d la question n'est pas de demander votre avis sur l'interet du code mais sur son fonctionnement !
PK ca ne marche pas ? :sad)

-={[ Zeroc00l ]}=-
Commenter la réponse de cs_Zeroc00l
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
0
Merci
Compare ce que tu as ecrit avec ce qu'il y a de publie, tu en trouveras des dizaines de machin de ce genre.
Y aurait pas une histoire de 'endl' a mettre apres ecriture par 'cout' ?
BruNews, ciao...
Commenter la réponse de BruNews
Messages postés
950
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
0
Merci
Comme te l'as écrit BruNews, il est possible que tu aies simplement oublié un endl. Exemple pour pas que tu me re-dises que je n'ai pas lu ton code.

cout<<"test"<<endl;


Kaid - kaid.fr.st
Commenter la réponse de cs_Kaid
Messages postés
127
Date d'inscription
mercredi 18 juillet 2001
Statut
Membre
Dernière intervention
27 octobre 2004
0
Merci
Ce code me semble correct.
La compilation avec gcc 3.2 pour linux donne juste un warning (utiliser iostream plutot que iostream.h)
Le programme compile et s'execute parfaitement sans erreur.

Avec Borland 5.5, pas de pbs de compilation, ni d'affichage mais le prog plante au 2eme argument du scanf...

le endl est défini par (cf ostream.h) :
inline _CRTIMP ostream& __cdecl endl(ostream& _outs) { return _outs << '\n' << flush; }
Mais je reconnais que le flux n'est affiché (avec VC++6.0 chez moi) que si l'on met le endl ou un flush ! (et après ca plante)

Je pense donc que le problème de flux est du a VC++.
Désolé de ne pas apporter de réponse plus précise.

Cordialement,

ADPro22
Commenter la réponse de ADPro22
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
0
Merci
Bon au moins kku ns td'accord que quelquchose ne troune pas rond ! :) ca me rassure
BruNew => l'histoire du endl oui peut etre .. mais il n'empeche que les evenements que j'ai décrit restent reels !!!
de plus endl etant egal a \n , la duxieme source que j'ai poster et qui osait probleme pour la ligne cout Combi;
Combi etant un pointeur vers un chaine de caractere !!!
Les element etant tous intialiser a '0' sauf le premier a ' ' et le dernier a '\n'
Et pas de scanf ... A moins que cout n'aime pas afficher des espace ?
Enfin en tout cas regarde le code fais un as a pas (le code s'emble tres complique mais on tombe dessus au pas a pas sans melange ! De plus il n'y a que Combi a suivre de la tete !

Voila si vous avez envie de contribuer à résoudre ce "bug" ....

-={[ Zeroc00l ]}=-
Commenter la réponse de cs_Zeroc00l
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
0
Merci
bon effectivement un ami ( tres cale en C++ pour preuve il a fait : http://cs.unc.edu/~redon/ en assant reMerci Steph !:) ) m'a expliqué :

"Le probleme vient du fait que quand tu fais un cout, les caracteres sont envoyés à un 'buffer' qui stocke ce que tu veut afficher. Quand le buffer est suffisamment plein, ou que tu lui demandes d'aller a la ligne par exemple, il affiche ce qui attend dans le buffer.
Un moyen d'eviter ce genre de probleme est de dire explicitement que l'on veut vider le buffer.
Pour faire ca, il suffit de mettre flush à la fin du cout :

Tu remplaces cout << "entrez 3 valeurs : "; par :

cout << "entrez 3 valeurs : " << flush;
"

Voila !!! Expliqué comme ca je comprend déja mieux !!!
(si vous telech la video du dragon dite moi si elle est bien mon lecteur ne trouve pas les codecs .. :( )

Bon ben c tout !! Problème résolu (chui content je vais pouvoir accélerer mon apprentissage ! Arf ! J'ai pris pas mal de retard ! )

-={[ Zeroc00l ]}=- (qui a réparé son cable)

P.S Il m'a donne aussi de la doc en anglais sur le buffering avec plein d'exemples (tout en anglais ;) ) Si vous les voulez,
no pb, contactez moi !

P.S 2 : ADPro22 tu avais raison mais n'avais pas expliqué pourquoi ! Tu aurais dis comment utiliser flush (je suis pas devin, je commence a peine le C++ :) ) Ca aurait ete bien ! Mais merci quand meme a tous pour l'interet porte à ce problème
Commenter la réponse de cs_Zeroc00l
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
0
Merci
Bon pour les codecs je lui ai dit et il a reglé le problème il a mis un lien alors inutile de me dire que je suis stupide ! Thks

-={[ Zeroc00l ]}=-
Commenter la réponse de cs_Zeroc00l