Provided by:
manpages-pl-dev_20060617-3_all 
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.