FGETS |
Demande une chaine dans un fichier |
---|---|
Langage C | stdio.h |
Syntaxe
char *fgets(char *str,int n,FILE *ptrfichier); |
Paramètres
Nom | Description |
---|---|
ptrfichier | Ce paramètre permet d'indiquer l'identificateur de fichier |
n | Ce paramètre permet d'indiquer le nombre de caractères maximal pouvant être lu |
str | Ce paramètre permet d'indiquer la chaîne de caractères recevant les données |
Description
Cette fonction effectue la lecture d'une chaîne de caractères dans un fichier.
Algorithme
MODULE fgets(str, n, stream) SI stream est invalide ou n ≤ 0 ALORS RETOURNE NULL * Le flux est invalide ou la taille est incorrecte FIN SI i ← 0 BOUCLE TANT QUE i < n - 1 * Lire jusqu'à n - 1 caractères maximum character ← lire le caractère suivant du stream SI le caractère est la fin du fichier ALORS SI i = 0 ALORS RETOURNE NULL * Fin de fichier atteinte sans lecture FIN SI break FIN SI str[i] ← character i ← i + 1 SI le caractère est une nouvelle ligne ALORS break * Fin de la ligne atteinte FIN SI FIN BOUCLE TANT QUE str[i] ← '\0' * Terminer la chaîne avec un caractère nul RETOURNE str |
Remarques
- Lecture d'une ligne depuis un fichier : La fonction fgets lit une ligne depuis un flux donné, généralement un fichier ou stdin. Contrairement à des fonctions comme scanf, elle est conçue pour lire jusqu'à une limite définie ou jusqu'à ce qu'un caractère de fin de ligne soit rencontré, ce qui en fait un choix sûr pour la gestion des entrées.
- Prévention des débordements de tampon : fgets prend trois paramètres : un tampon (où entreposer la chaîne de caractères), la taille maximale à lire, et un flux de données. Cette taille limite protège contre les débordements de tampon, une vulnérabilité commune dans des fonctions comme gets, ne prenant pas en compte la longueur de la chaîne de caractères.
- Inclusion du caractère de nouvelle ligne : Si une ligne complète est lue avant d'atteindre la taille limite, le caractère de nouvelle ligne (\n) est inclus dans la chaîne de caractères de retour, sauf si la ligne dépasse la taille maximale. Cela nécessite souvent un traitement supplémentaire si vous ne voulez pas conserver ce caractère.
- Gestion des fins de fichiers et erreurs : Lorsque la fin du fichier est atteinte ou qu'une erreur se produit, fgets retourne NULL. Cela permet aux programmeurs de vérifier la condition du flux et de réagir en conséquence. Cependant, il est important de vérifier si la condition d'erreur ou de fin de fichier a causé le retour de NULL.
- Lecture partielle : Si une ligne est plus longue que la taille maximale spécifiée, fgets lit une partie de la ligne et laisse le reste pour les appels suivants. Cela peut nécessiter des boucles pour récupérer une ligne complète lorsque la taille limite est inférieure à la longueur de la ligne.
- Non-destruction de la mémoire : Contrairement à certaines fonctions de lecture pouvant provoquer des erreurs fatales en cas de dépassement de tampon, fgets garantit que le contenu lu reste valide et limité au tampon spécifié. Cela en fait une solution préférée pour des applications nécessitant une gestion robuste de la mémoire.
- Compatibilité et utilisation : fgets est portable et compatible avec toutes les implémentations C conformes au standard. Elle est particulièrement utile pour traiter des fichiers texte ou des flux d'entrée utilisateur où des tailles définies et un comportement prévisible sont nécessaires. Cela la rend idéale pour des applications interactives ou des traitements de fichiers.
Exemple
Prenons pour acquis que le fichier «readtext.txt» est le contenu :
UnDeux
Trois
Quatre
Cinq
Six
Sept
Huit
Neuf
Dix
Onze
Douze
Treize
Quatorze
Quinze
Seize
Voici un exemple montrant une utilisation plus classique de cette fonction :
Essayer maintenant !
on obtiendra le résultat suivant :
1:Un2:Deux
3:Trois
4:Quatre
5:Cinq
6:Six
7:Sept
8:Huit
9:Neuf
10:Dix
11:Onze
12:Douze
13:Treize
14:Quatorze
15:Quinze
16:Seize
Voir également
Langage de programmation - C - Référence procédures et fonctions - fgetc
Langage de programmation - C - Référence procédures et fonctions - fprintf
Langage de programmation - C - Référence procédures et fonctions - fputc
Langage de programmation - C - Référence procédures et fonctions - fputs
Langage de programmation - C - Référence procédures et fonctions - fscanf
Langage de programmation - C - Référence procédures et fonctions - getchar
Langage de programmation - C++ - Référence procédures et fonctions - fgets
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 731.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 98.