Provided by: manpages-pl-dev_0.5-1_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 || _XOPEN_SOURCE >= 700
           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 równe NULL, to funkcja getline() przydziela bufor dla umieszczenia w nim
       zawartości linii, który to bufor musi zostać zwolniony przez program użytkownika (w  takim
       przypadku wartość *n jest ignorowana).

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

WERSJE

       Powyższe funkcje są dostępne od libc 4.6.27.

ZGODNE Z

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

PRZYKŁAD

       #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("Pobrano linię o długości %zu :\n", read);
               printf("%s", line);
           }

           free(line);
           exit(EXIT_SUCCESS);
       }

ZOBACZ TAKŻE

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

O STRONIE

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

TŁUMACZENIE

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

       Polskie  tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na
       stronie  http://sourceforge.net/projects/manpages-pl/.  Jest   zgodne   z   wersją    3.52
       oryginału.