« Programmation C/Entrées/sorties » : différence entre les versions
Contenu supprimé Contenu ajouté
→Entrées non formatées : Prototype C99 |
→Entrées non formatées : Suppression exemple erronné et lien sur livre d'exercice pour une solution. |
||
Ligne 469 :
</source>
La fonction <code>fgets()</code> permet de saisir une ligne complète dans la zone mémoire spécifiée, en évitant tout débordement. Si la ligne peut être contenue dans le bloc, elle contiendra le caractère de saut de ligne (<code>'\n'</code>), en plus du caractère nul. Dans le cas contraire, la ligne sera tronquée, et la suite de la ligne sera obtenue à l'appel suivant. Si la fonction a pu lire au moins un caractère, elle retournera la chaine transmise en premier argument, ou <code>NULL</code> s'il n'y a plus rien à lire
Un exemple de lecture de ligne arbitrairement longue est fournie dans le livre [[Exercices en langage C/Fonctions#Lire une ligne longue avec fgets|Exercices en langage C]] (énnoncé et solution).
À noter que cette fonction est incapable de traiter des fichiers mixtes (binaire et texte) depuis un descripteur en mode caractère (accès séquentiel). D'une part la fonction ne renvoyant pas le nombre d'octets lus (ce qui aurait facilement réglé le problème) et d'autre part, ftell() ne fonctionnant pas sur de tels descripteurs, il faudra reprogrammer <code>fgets</code> pour gérer ce cas de figure.
|