Bug de flushall( ) en C++
Je suis débutant et dois programmer en C++ à partir d'un code en turbo C. J'ai un petit problème pour l'instruction flushall( ) qui n'existe pas en C++.
J'ai essayé de remplacer par flush (via iostream.h) et fflush ( ) (stdio.h) sans plus de succès. Que faire?
Voici la partie du code posant problème:
// Récupération du choix utilisateur
{
char reponse; // Réponse de l'utilisateur
do
{
pos(colonnechoix + 15, lignechoix);
flushall();
if (mode == WAIT)
reponse = getch ();
else
{
// Vérification de l'état du buffer clavier:
//Si un caracère s'y trouve, on peut le lire, sinon Reponse vaut 255
if (kbhit ())
reponse = getch ();
else
reponse = 255;
}
if ((reponse >= ' ') && (reponse < 255))
printf ("%c", reponse);
if ((reponse >= '2')&&(reponse - '1' <= nbfonctions))
{
selection = reponse - '0';
affichecommandes (nbfonctions, selection, thelength, libeles);
fonctions [reponse - '2'](parametre);
affichegeneral (titre);
affichecommandes (nbfonctions, selection, thelength, libeles);
}
else if ((reponse == '1') || (reponse == '\x1B'))
done = TRUE;
else if (reponse == '\0')
{
reponse = getch ();
if (reponse == uparrow)
{
selection = selection - 1;
if (selection < 1)
selection = nbfonctions + 1;
}
else if (reponse == downarrow)
{
selection = selection + 1;
if (selection > nbfonctions + 1)
selection = 1;
}
}
else if ((reponse == '\n') || (reponse == '\r'))
if (selection > 1)
{
fonctions[selection - 2](parametre);
affichegeneral(titre);
}
else
done = TRUE;
// Mise à jour de l'affichage des variables
if ((!done) & (mode == WAIT))
{
affichecommandes (nbfonctions, selection, thelength, libeles);
affichevariables (nbvariables, legendes, variables);
}
} while ((!done) || (mode == NOWAIT));
}
J'ai essayé de remplacer par flush (via iostream.h) et fflush ( ) (stdio.h) sans plus de succès. Que faire?
Voici la partie du code posant problème:
// Récupération du choix utilisateur
{
char reponse; // Réponse de l'utilisateur
do
{
pos(colonnechoix + 15, lignechoix);
flushall();
if (mode == WAIT)
reponse = getch ();
else
{
// Vérification de l'état du buffer clavier:
//Si un caracère s'y trouve, on peut le lire, sinon Reponse vaut 255
if (kbhit ())
reponse = getch ();
else
reponse = 255;
}
if ((reponse >= ' ') && (reponse < 255))
printf ("%c", reponse);
if ((reponse >= '2')&&(reponse - '1' <= nbfonctions))
{
selection = reponse - '0';
affichecommandes (nbfonctions, selection, thelength, libeles);
fonctions [reponse - '2'](parametre);
affichegeneral (titre);
affichecommandes (nbfonctions, selection, thelength, libeles);
}
else if ((reponse == '1') || (reponse == '\x1B'))
done = TRUE;
else if (reponse == '\0')
{
reponse = getch ();
if (reponse == uparrow)
{
selection = selection - 1;
if (selection < 1)
selection = nbfonctions + 1;
}
else if (reponse == downarrow)
{
selection = selection + 1;
if (selection > nbfonctions + 1)
selection = 1;
}
}
else if ((reponse == '\n') || (reponse == '\r'))
if (selection > 1)
{
fonctions[selection - 2](parametre);
affichegeneral(titre);
}
else
done = TRUE;
// Mise à jour de l'affichage des variables
if ((!done) & (mode == WAIT))
{
affichecommandes (nbfonctions, selection, thelength, libeles);
affichevariables (nbvariables, legendes, variables);
}
} while ((!done) || (mode == NOWAIT));
}
2 réponses
-
Contributeurca sert à quoi précisément flushall ? Si c'est par exemple pour remettre à zéro ta variable 'reponse' tu n'a qu'à faire une fonction flush qui te met ta rempli ta variable avec '\0'. Par la suite tu test sur le caractère '\0'.
Je ne c pas si c ca que tu voulais savoir mais bon on sait jamais..
@+ -
nickel, ça marche!!
Merci!!