Provided by: manpages-pl-dev_4.15.0-9_all bug

NAZWA

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

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():
           Since glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Before 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

       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.

       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.

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.13  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
       ⟨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⟩.