Provided by: manpages-fr_1.67.0-1_all bug

NOM

       getline, getdelim - Saisie de chaîne délimitée.

SYNOPSIS

       #define _GNU_SOURCE
       #include <stdio.h>

       ssize_t getline(char **lineptr, size_t *n, FILE *stream);
       ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);

DESCRIPTION

       getline() lit une ligne entière et stocke l’adresse du tampon contenant
       le texte dans *lineptr.  Le tampon se termine  par  un  0  terminal  et
       inclut le caractère saut-de-ligne, si un tel séparateur a été trouvé.

       Si  *lineptr  vaut  NULL,  la  routine  getline() alloue un tampon pour
       recevoir la ligne,  ce  tampon  devra  être  libéré  par  le  programme
       utilisateur.  Alternativement, avant d’appeler getline(), *lineptr peut
       contenir un pointeur vers un tampon alloué par malloc() et de taille *n
       octets. Si le buffer n’est pas suffisant pour recevoir la ligne saisie,
       getline() redimensionne le tampon afin de s’adapter grâce à  realloc(),
       mettant  à jour *lineptr et *n comme il se doit. Quoi qu’il en soit, en
       cas de succès, *lineptr et *n seront  adaptés  afin  de  rendre  compte
       respectivement de l’adresse et de la taille du tampon.

       getdelim()  fonctionne  comme  getline(),  si ce n’est qu’un séparateur
       différent de saut-de-ligne  peut  être  spécifié  en  tant  qu’argument
       delimiter.   Tout  comme  avec getline(), aucun séparateur n’est ajouté
       s’il n’y en avait pas dans l’entrée avant que la fin du fichier ne soit
       atteinte.

VALEUR RENVOYÉE

       En  cas  de  succès,  getline()  et  getdelim()  renvoient le nombre de
       caractères lus, séparateur inclus, mais sans compter le zéro  terminal.
       Cette  valeur  peut  être  utilisée afin de traiter les caractères null
       insérés dans la ligne lue.

       Les deux fonctions renvoient -1 en cas d’échec de lecture de  la  ligne
       (condition de fin de fichier incluse)

ERREURS

       EINVAL Paramètres  erronés  (n  ou  lineptr valent NULL, ou bien stream
              n’est pas valide).

EXEMPLE

       #define _GNU_SOURCE
       #include <stdio.h>
       #include <stdlib.h>

       int main(void)
       {
            FILE * fp;
            char * line = NULL;
            size_t len = 0;
            ssize_t read;
            fp = fopen("/etc/motd", "r");
            if (fp == NULL)
                 exit(EXIT_FAILURE);
            while ((read = getline(&line, &len, fp)) != -1) {
                 printf("Retrieved line of length %zu :\n", read);
                 printf("%s", line);
            }
            if (line)
                 free(line);
            return EXIT_SUCCESS;
       }

CONFORMITÉ

       getline() tout comme getdelim() sont des extensions  GNU.   Elles  sont
       disponibles depuis la libc 4.6.27.

VOIR AUSSI

       read(2), fopen(3), fread(3), gets(3), fgets(3), scanf(3)

TRADUCTION

       Stéphan Rafin, 2002.