Bug de flushall( ) en C++
novice
-
novice54 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
novice54 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
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));
}