Lire une chaîne de caractères depuis l’entrée standard

Problème

Vous souhaitez lire des chaînes de caractères sur l’entrée standard de votre programme.

Solution

Utilisez fgets() avec stdin comme descripteur de fichiers.

Discussion

Lire une chaîne de caractères depuis l’entrée standard peut s’effectuer exactement comme si cette entrée standard était un fichier, de descripteur de fichiers 0 pour la fonction read() et de descripteur de flux stdin pour les fonctions fgets(), fread() et fscanf(). Cependant, deux fonctions sont à éviter pour des problèmes de débordement de tampon possibles : scanf() et gets(). Ces deux fonctions, qui utilisent un espace tampon fourni par l’utilisateur, ne contrôlent pas la longueur des données lues, et il est toujours possible qu’un utilisateur entre une chaîne de caractères plus longue que l’espace tampon prévu. Rappelons que gets() n’est plus une fonction du langage C à partir de la norme C11. Pour lire une ligne, vous pouvez donc reprendre la première recette du chapitre "Contenu des fichiers" en choisissant stdin comme descripteur de flux.

Par ailleurs, vous pouvez utiliser readline() de la bibliothèque du même nom, à savoir libreadline. Celle-ci fait partie du projet GNU et est disponible depuis le site web http://www.gnu.org. Cette fonction prend en argument une chaîne de caractères qui sera affichée...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Envoyer des données sur l'entrée standard d'un programme
Suivant
Lire un mot de passe sur l'entrée standard