Provided by: manpages-pl-dev_20060617-3_all bug

NAZWA

       getline, getdelim - wprowadzanie lacuchow rozgraniczonych

SK/LADNIA

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

OPIS

       getline()  odczytuje  cal  lini ze strumienia stream, przechowujc adres
       bufora zawierajcego tekst w *lineptr. Bufor jest zakoczony znakiem null
       i zawiera znak nowej linii, jeli go napotkano.

       Gdy *lineptr jest rowne NULL, to funkcja getline() przydziela bufor dla
       umieszczenia w nim zawartoci linii, ktory to bufor musi zosta zwolniony
       przez  program  uytkownika.  Alternatywnie,  przed wywolaniem getline()
       *lineptr moe zawiera wskanik do bufora przydzielonego za pomoc malloc()
       o  rozmiarze  *n  bajtow.  Gdy  rozmiar bufora nie jest wystarczajcy do
       umieszczenia w nim  odczytanej  linii,  getline()  rozszerzy  bufor  do
       odpowiedniego  rozmiaru  za  pomoc realloc(), modyfikujc *lineptr i *n,
       jeli bdzie to potrzebne. W kadym razie, po pomylnym wywolaniu  *lineptr
       i  *n  bd  zaktualizowane  tak, aby odzwierciedli, odpowiednio, adres i
       rozmiar bufora.

       getdelim() dziala  jak  getline(),  z  tym  wyjtkiem  e  jako  argument
       delimiter  mona  poda  ogranicznik  linii  inny  ni  znak  nowej linii.
       Podobnie jak dla getline(), znak ogranicznika nie  jest  dodawany,  gdy
       nie wystpowal w danych wejciowych przed osigniciem koca pliku.

WARTO ZWRACANA

       Po   pomylnym   zakoczeniu,   getline()   i  getdelim()  zwracaj  liczb
       odczytanych znakow, lcznie ze znakiem  ogranicznika,  ale  nie  wlczajc
       koczcego   bajtu   null.  Warto  ta  moe  sluy  to  wychwycenia  znakow
       nullzawartych w odczytanej linii.

       Obie funkcje zwracaj -1, gdy nie uda si odczyta  linii  (wlczajc  w  to
       prob czytania na kocu pliku).

B/LDY

       EINVAL Bldne   wartoci  parametrow  (n  lub  lineptr  rowne  NULL,  lub
              nieprawidlowy stream ).

PRZYK/LAD

       #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("Odczytano lini o dlugoci %zu :\n", read);
                 printf("%s", line);
            }
            if (line)
                 free(line);
            return EXIT_SUCCESS;
       }

ZGODNE Z

       Zarowno getline(), jak i getdelim() s rozszerzeniami GNU. S one dostpne
       od libc 4.6.27.

ZOBACZ TAKE

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

INFORMACJE O T/LUMACZENIU

       Powysze  tlumaczenie  pochodzi z nieistniejcego ju Projektu Tlumaczenia
       Manuali i moe nie by aktualne. W razie zauwaenia ronic  midzy  powyszym
       opisem  a  rzeczywistym  zachowaniem  opisywanego programu lub funkcji,
       prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.