Provided by: manpages-pl-dev_0.7-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
           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).

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ŁAD

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

       int
       main(void)
       {
           FILE *stream;
           char *line = NULL;
           size_t len = 0;
           ssize_t read;

           stream = fopen("/etc/motd", "r");
           if (stream == NULL)
               exit(EXIT_FAILURE);

           while ((read = getline(&line, &len, stream)) != -1) {
               printf("Pobrano wiersz o długości %zu :\n", read);
               printf("%s", line);
           }

           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  4.07  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   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ą   4.07
       oryginału.