focal (3) getdelim.3.gz

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