Comment faire pour effacer l'entrée standard stdin avant d'obtenir une nouvelle?

J'ai lu environ 5-10 différents conseils comment faire pour effacer l'entrée standard stdin, mais aucun d'entre eux est adapté à mes besoins. Le truc, c'est que fflush(stdin) a parfaitement fonctionné sur mon ordinateur, mais malheureusement, il ne semble pas fonctionner partout, donc j'ai besoin de quelque chose avec les mêmes fonctionnalités. Tous les autres, j'ai essayé efface stdin quand il n'est pas vide, mais nécessite la saisie de l'utilisateur lors de l'entrée standard stdin EST vide, ce qui signifie qu'il exige que l'entrée dans un moment, je ne veux pas obtenir tout (+ il ignore de toute façon).

La question est: puis-je faire en quelque sorte en sorte, que stdin EST vide avant que je nécessitent la saisie de l'utilisateur? (et si non, alors, et seulement ALORS clair c'est en quelque sorte?)
quelque chose comme:

if (stdin is NOT empty) 
    while (getchar() != '\n')
        continue;

EDIT: le truc c'est que je charge les caractères de stdin un par un, et à un certain point, une partie de l'entrée de la précédente itération pourrait ou ne pourrait pas se jeter. de toute façon, j'ai besoin d'avoir clairement stdin avant de me demander à l'utilisateur une autre entrée pour être traité. De compensation de la mémoire tampon n'est pas une grosse affaire, le problème est ce qui se passe lorsque l'entrée est vide lorsque le programme arrive au point de compensation stdin, parce qu'en ce moment le programme a besoin d'une autre entrée qui va être mangé par la fonction de compensation. C'est ce que je voulez vous débarrasser de. (quand je pourrais utiliser fflush(stdin); je savais, que la prochaine ligne de mon programme de la stdin SERA vide de n'importe quoi, sans poser de questions...)

fflush(stdin) UB.
Il n'y a pas une telle chose comme un vider le flux d'e/S , est un stream. Considérer: ./myprog </dev/random ; il jamais voir la fin de ses flux stdin?
programmation sur windows, est de travailler à linux...
Que la nature de l'application serait de vouloir faire cela? En 30 ans de la programmation en C, je n'ai jamais ressenti le besoin, et je ne connais absolument pas le programme de cette. Mais tous les débutants le souhaitez. pourquoi, OH POURQUOI? qu'est-Ce que l'anti-modèle? Qu'est-ce que le XY-problème que vous essayez de résoudre?
Voulez-vous éliminer toute partiellement tapé les lignes d'entrée (qui est, d'entrée pour lequel l'utilisateur n'a pas tapé ENTRÉE pour valider)?

OriginalL'auteur Tom | 2016-04-19