Provided by: manpages-pl-dev_4.18.1-1_all bug

NAZWA

       getline, getdelim - wprowadzanie łańcuchów rozgraniczonych

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <stdio.h>

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

   Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

       getline(), getdelim():
           Od glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Przed glibc 2.10:
               _GNU_SOURCE

OPIS

       getline()   odczytuje   całą   linię  ze  strumienia  stream,  przechowując  adres  bufora
       zawierającego tekst w *lineptr. Bufor jest zakończony znakiem NULL i  zawiera  znak  nowej
       linii, jeśli go napotkano.

       If  *lineptr  is  set  to NULL before the call, then getline()  will allocate a buffer for
       storing the line.  This buffer should be freed by  the  user  program  even  if  getline()
       failed.

       Alternatywnie,  przed  wywołaniem  getline()  *lineptr  może  zawierać  wskaźnik do bufora
       przydzielonego za pomocą malloc() o rozmiarze *n  bajtów.  Gdy  rozmiar  bufora  nie  jest
       wystarczający   do  umieszczenia  w  nim  odczytanej  linii,  getline()  rozszerzy  go  do
       odpowiedniego rozmiaru za pomocą realloc(), modyfikując *lineptr i  *n,  jeśli  będzie  to
       potrzebne.

       W  każdym  razie,  po  pomyślnym  wywołaniu  *lineptr  i  *n  będą zaktualizowane tak, aby
       odzwierciedlić, odpowiednio, adres i rozmiar bufora.

       getdelim() działa jak getline(), z tym wyjątkiem że jako argument  delimiter  można  podać
       ogranicznik linii inny niż znak nowej linii. Podobnie jak dla getline(), znak ogranicznika
       nie jest dodawany, gdy nie występował w danych wejściowych przed osiągnięciem końca pliku.

WARTOŚĆ ZWRACANA

       On success, getline()  and getdelim()  return the number of characters read, including the
       delimiter  character,  but not including the terminating null byte ('\0').  This value can
       be used to handle embedded null bytes in the line read.

       Both functions return -1 on failure to read a line (including end-of-file condition).   In
       the event of a failure, errno is set to indicate the error.

       If  *lineptr  was set to NULL before the call, then the buffer should be freed by the user
       program even on failure.

BŁĘDY

       EINVAL Błędne wartości parametrów (n lub lineptr równe NULL lub nieprawidłowy stream).

       ENOMEM Nie powiódł się przydział pamięci dla bufora linii.

ATRYBUTY

       Informacje  o  pojęciach  używanych  w  tym  rozdziale   można   znaleźć   w   podręczniku
       attributes(7).

       ┌──────────────────────────────────────────────────────┬────────────────────────┬─────────┐
       │InterfejsAtrybutWartość │
       ├──────────────────────────────────────────────────────┼────────────────────────┼─────────┤
       │getline(), getdelim()                                 │ Bezpieczeństwo wątkowe │ MT-Safe │
       └──────────────────────────────────────────────────────┴────────────────────────┴─────────┘

STANDARDY

       Zarówno  getline(), jak i getdelim() są rozszerzeniami GNU. Zostały dołączone do standardu
       POSIX.1-2008.

PRZYKŁADY

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

       int
       main(int argc, char *argv[])
       {
           FILE *stream;
           char *line = NULL;
           size_t len = 0;
           ssize_t nread;

           if (argc != 2) {
               fprintf(stderr, "Użycie: %s <file>\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           stream = fopen(argv[1], "r");
           if (stream == NULL) {
               perror("fopen");
               exit(EXIT_FAILURE);
           }

           while ((nread = getline(&line, &len, stream)) != -1) {
               printf("Retrieved line of length %zd:\n", nread);
               fwrite(line, nread, 1, stdout);
           }

           free(line);
           fclose(stream);
           exit(EXIT_SUCCESS);
       }

ZOBACZ TAKŻE

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

TŁUMACZENIE

       Autorami polskiego tłumaczenia niniejszej strony podręcznika  są:  Andrzej  Krzysztofowicz
       <ankry@green.mf.pg.gda.pl>,   Robert   Luberda   <robert@debian.org>   i   Michał   Kułach
       <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe  informacje  o  warunkach  licencji
       można   uzyskać   zapoznając   się   z   GNU   General   Public   License   w   wersji   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  lub  nowszej.  Nie   przyjmuje   się   ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres listy dyskusyjnej
       ⟨manpages-pl-list@lists.sourceforge.net⟩.