fgets ()- Lecture d'une chaîne

Format

#include <stdio.h>
char *fgets (char *string, int n, FILE *stream);

Niveau de langue

American National Standards Institute

Unités d'exécution protégées

Oui

Description

La fonction fgets() lit les caractères à partir de la position stream en cours jusqu'au premier caractère de nouvelle ligne (\n) inclus, jusqu'à la fin du flux ou jusqu'à ce que le nombre de caractères lus soit égal à n-1, la première valeur étant retenue. La fonction fgets() stocke le résultat dans chaîne et ajoute un caractère null (\0) à la fin de la chaîne. La chaîne inclut le caractère de nouvelle ligne, s'il est lu. Si n est égal à 1, la chaîne est vide.

Valeur renvoyée

La fonction fgets() renvoie un pointeur vers la mémoire tampon string si elle aboutit. Une valeur de retour NULL indique une erreur ou une condition de fin de fichier. Utilisez les fonctions feof() ou ferror() pour déterminer si la valeur NULL indique une erreur ou la fin du fichier. Dans les deux cas, la valeur de la chaîne n'est pas modifiée.

La fonction fgets() n'est pas prise en charge pour les fichiers ouverts avec type=record.

La valeur de errno peut être définie sur:
Valeur
Signification
EBADF
Le pointeur de fichier ou le descripteur n'est pas valide.
CONVERT
Une erreur de conversion s'est produite.
ENOTREAD
Le fichier n'est pas ouvert pour les opérations de lecture.
EGETANDPUT
Une opération de lecture non autorisée s'est produite après une opération d'écriture.
ERECIO
Le fichier est ouvert pour les entrées-sorties d'enregistrement.
ESTDIN
stdin ne peut pas être ouvert.
ERREUR D'E-S
Une erreur d'E-S irrémédiable s'est produite.
EIORECERR
Une erreur d'E-S remédiable s'est produite.

Exemple

Cet exemple extrait une ligne d'entrée d'un flux de données. L'exemple ne lit pas plus de MAX_LEN-1 caractères, ou jusqu'à un caractère de nouvelle ligne du flux.
#include <stdio.h>
 
#define  MAX_LEN  100
 
int main(void)
{
   FILE *stream;
   char line[MAX_LEN], *result;
 
   stream = fopen("mylib/myfile","rb");
 
   if ((result = fgets(line,MAX_LEN,stream)) != NULL)
      printf("The string is %s\n", result);
 
   if (fclose(stream))
      perror("fclose error");
}

Rubriques connexes