Vider memoir tampon

WRIDANIOS Messages postés 24 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009 - 8 avril 2008 à 12:14
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 - 8 avril 2008 à 17:23
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

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
8 avril 2008 à 12:21
Salut,
flushall() t'as essayé ?
Car fflush(...) c'est pour les flux sur les fichiers!

Shell
0
WRIDANIOS Messages postés 24 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009
8 avril 2008 à 12:28
merci
flushall() se trouve dans quel header de c....
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
8 avril 2008 à 13:15
#include <stdio.h>

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WRIDANIOS Messages postés 24 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009
8 avril 2008 à 16:05
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
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
8 avril 2008 à 17:23
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
0
Rejoignez-nous