Loading

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);

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

       Si *lineptr est NULL, la routine  getline()  allouera  un  tampon  pour
       sauver  la  ligne.  Ce  tampon  devra  être  libéré  par  le  programme
       utilisateur (la valeur dans *n est ignorée).

       Alternativement, avant d’appeler getline(), *lineptr peut  contenir  un
       pointeur vers un tampon de *n octets alloué par malloc(3). Si le tampon
       n’est  pas  suffisant  pour  sauver  la  ligne  saisie,  getline()   le
       redimensionnera avec realloc(3), mettant à jour *lineptr et *n comme il
       se doit.

        Quoi qu’il en soit, en cas de succès, *lineptr et *n seront mis à jour
       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  nuls
       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).

CONFORMITÉ

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

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("Réception d’une ligne de longueur %zu :\n", read);
               printf("%s", line);
           }

           if (line)
               free(line);
           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

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

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.23 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       être       trouvées      à      l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a été traduite  par  Stéphan  Rafin  <stephan  DOT
       rafin  AT  laposte  DOT  net> en 2002, puis a été mise à jour par Alain
       Portal <aportal AT  univ-montp2  DOT  fr>  jusqu’en  2006,  et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».