Bonjour,

Je chercher un moyen portable de vider stdin. Car nous savons tous que fflush n'est vraiment pas conseiller pour sa portabilité médiocre!

J'ai vu plusieurs choses à droite a gauche, mais elles bloque le programme. Style l'utilisation de getchar qui est bloquant.

Je ne trouve rien de convaincant

Quelqu'un aurait il une idée pour vider le stdin avant de demander une entrée utilisateur et sans bloquer le programme?

Merci

Edit: J'ai déjà essayer ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
static void VideTampon(void) {
   int c;
   while((c = fgetc(stdin)) != '\n' && c != EOF) {
   }
}
Mais ça bloque aussi je ne comprend pas trop pourquoi.
En faite j'appelle ma fonction SaisieChaine:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void SaisieChaine(const char * prompt, char * var, const int taille) {
 
	int nb;
 
 
	VideTampon();
 
 
	printf("%s", prompt);
 
	fgets(var, taille, stdin);
 
 
 
	nb = strlen(var);
 
	var[nb-1] = '\0';
 
}
Comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
		SaisieChaine("Nom: ", tampon1, sizeof tampon1);
 
		SaisieChaine("Prenom: ", tampon2, sizeof tampon2);
 
		SaisieChaine("Tel: ", tampon3, sizeof tampon3);
Et donc ca m'affiche Nom: je tape le nom et la c'est bloquant
Je suis obligé d'appuyer sur entrée pour qu'il me demande Prenom: