Bug de flushall( ) en C++

novice -  
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));
}

2 réponses

kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
ca 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..

@+
0
novice54 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
nickel, ça marche!!
Merci!!
0