Vider memoir tampon

Signaler
Messages postés
24
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
11 mai 2009
-
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
-
Bonjour,
Je programme en C ,au niveau des etude, depuis 10/2007, mon problem est lorsque je v saisir un caractaire , le compilateur depase la saisie , j'ai utiliser scanf("%c",&car) ou car=getchar()
mais le meme problem , j'ai bien conclu que c'est a cause de la memoir tampon , ils ont ma dis de vider la memoire tampon avant d'effectuer la saisie . j'ai essayer 'fflush(0)' du header "unistd.h" , mes c'est tjr le meme probleme . Quoi faire, meci d'avance...

6 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Salut,
flushall() t'as essayé ?
Car fflush(...) c'est pour les flux sur les fichiers!

Shell
Messages postés
24
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
11 mai 2009

merci
flushall() se trouve dans quel header de c....
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
#include <stdio.h>

Shell
Messages postés
24
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
11 mai 2009

bon, quand je compile avec Geany sous Linux UBUNTU il m'affiche
warning: implicit declaration of function ?flushall?
Messages postés
24
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
11 mai 2009

re:
ce ci est un exemple de programme :
#include <stdio.h>

int main(void)
{
char ca;
do {
flushall();
ca=getchar();
if(ca!='a');
printf("erreur");
}while(ca!='a');
return 0;
}

l'affichage est le suivas lors du saisie un car != de 'a';

"erreurerreur"
.
j'explique :
le progame affiche le message "erreur" lors de la premiere saisie d'un caractaire != de 'a' puis il reboucle et affiche un 2eme message "erreur" sans attendre une saisie par le clavier ....
aucune idee pour quoi !!!!
a vous ! merci
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
Bonjour,

1) Je n'ai ce comportement (erreurerreur) que si je supprime le flushall() et c'est normal puisque la boucle tourne 2 fois : sur la caractère saisi (différent de 'a') puis sur le retour chariot qui suit ! avec le flushall() le retour chariot est supprimé.

2) if (ca != 'a'); : le printf("erreur"); sort à chaque saisie !

Jean-François