[C] Vider stdin

Vider stdin [C] - Programmation

Marsh Posté le 23-09-2009 à 12:34:21    

Salut! J'aimerais savoir ce qu'il en est pour stdin...
 
Je voudrais créé une fonction qui s'assure que le buffer est vide... Or, j'ai remarqué qu'à la moindre vu d'EOF, la console propose un input...
Je me suis dis que la seule solution serait d'insérer un EOF au début du buffer, vous en pensez quoi?? C'est pas super rigoureux, non?
Si c'est pas une solution top top, je me suis dis qu'il serait simple d'utiliser memset si je pouvais connaitre la taille du buffer...
 
En fait, je suis pas super calé dans le fonctionnement des buffers... J'ai un niveau basique! Si vous avez des link vers des pages qui pourraient me permettre de trouver la solution par moi-même ça serait super sympa!
 
En réalité je me pose quelques questions:
- Est-ce que le buffer se charge d'effacer tout ce qui se trouve après EOF?
- Y'a-t-il un moyen de savoir si un buffer est vide?
- stdin est-il un buffer commun à plusieurs applications ou est-il initialisé pour chaque programme?
- Y'a-t-il un moyen de récupérer sa taille?
 
Merci!

Reply

Marsh Posté le 23-09-2009 à 12:34:21   

Reply

Marsh Posté le 23-09-2009 à 17:22:12    

Dans quel environnement ? DOS ? Unix ?
 
En tous cas, stdin n'est pas un buffer, mais un pseudo fichier.
La lecture du contenu de stdin ne se fait pas avec char a = stdin[0], mais avec un fread() ou une fonction de lecture de flux équivalente.
Donc, il n'est pas possible de faire un memset() de stdin. Donc stdin n'a pas de taille a priori.
 

Citation :

à la moindre vu d'EOF, la console propose un input...

Que signifie "propose" ici ?

Citation :

stdin est-il ... commun à plusieurs applications ou est-il initialisé pour chaque programme?

Cela dépend comment est redirigé stdin. En général, stdin n'est redirigé que vers une application, mais rien n'empêche que cette fonction redirige le flux stdin qu'elle a lue vers une autre application.

Reply

Marsh Posté le 24-09-2009 à 23:52:16    

Mais c'est quoi cette psychose sur la bufferisation de stdin ? Quel problème rencontres-tu ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed