Connaître la taille de l'entrée standard en C

arkoy -  
mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour à tous,

Je souhaitais savoir s'il y avait une possibilité de récupérer la taille d'une entrée standard en C sans déplacer le pointeur de lecture (comme getchar() suivit d'un compteur).

J'ai également essayé avec une déclaration FILE * input=stdin; avec un fseek(input,0,SEEK_END) et un ftell mais ça nous retourne -1 quelque soit la taille.

Merci d'avance.

2 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 

Salut arkoy,

Non, je ne crois pas.

Si un fichier était redirigé sur stdin oui, tu pourrais faire un fseek dessus (SEEK_END pourra ou non fonctionner sur les fichiers binaires cependant). Mais là je pense que tu parles de l'entrée standard venant du clavier.

Je ne connais pas d'autre moyen qu'en consommer le contenu pour voir ce qu'elle contient (à part faire getc() et ungetc() peut-être).

Pourquoi poses-tu cette question ?

0
mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   7 877
 

Bonjour,

Je ne vois pas comment ce serait techniquement possible. En effet, dans le cas général, stdin peut être alimenté par un flot de données arbitrairement long (par exemple à l'aide d'un pipe), et donc au moment où tu veux formuler ta requête, il n'y a aucun moyen de savoir quelle sera la taille de ce flot.

Bonne chance

0