Provided by: manpages-pl-dev_4.13-4_all bug

NAZWA

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

SKŁADNIA

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

   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.

       Gdy *lineptr jest ustawione na NULL i *n jest ustawione na  0  przed  wywołaniem,  to  funkcja  getline()
       przydziela  bufor  dla  umieszczenia  w  nim  zawartości linii. Bufor ten powinien zostać zwolniony przez
       program użytkownika nawet wówczas, gdy getline() zawiedzie.

       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

       Po  pomyślnym  zakończeniu, getline() i getdelim() zwracają liczbę odczytanych znaków, łącznie ze znakiem
       ogranicznika, ale nie włączając kończącego bajtu null ("\0").  Wartość  ta  może  służyć  to  wychwycenia
       znaków null zawartych w odczytanej linii.

       Obie  funkcje zwracają -1, gdy nie uda się odczytać linii (włączając w to próbę czytania na końcu pliku).
       W razie wystąpienia błędu ustawiana jest zmienna errno aby wskazać przyczynę.

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 │
       └───────────────────────┴────────────────────────┴─────────┘

ZGODNE Z

       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)

O STRONIE

       Angielska wersja tej strony pochodzi z wydania 5.10 projektu Linux man-pages. Opis  projektu,  informacje
       dotyczące   zgłaszania   błędów   oraz   najnowszą   wersję   oryginału   można   znaleźć   pod   adresem
       https://www.kernel.org/doc/man-pages/.

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  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.

GNU                                            1 listopada 2020 r.                                    GETLINE(3)