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

arkoy - 14 déc. 2023 à 18:46
mamiemando Messages postés 33084 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 avril 2024 - 18 déc. 2023 à 20:19

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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
14 déc. 2023 à 23:34

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 33084 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 avril 2024 7 749
18 déc. 2023 à 20:19

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