Rechercher une page de manuel
getline
Langue: pl
Version: 2001-10-07 (openSuse - 09/10/07)
Section: 3 (Bibliothèques de fonctions)
NAZWA
getline, getdelim - wprowadzanie ³añcuchów rozgraniczonychSK£ADNIA
#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 ca³± liniê, przechowuj±c adres bufora zawieraj±cego tekst w *lineptr. Bufor jest zakoñczony znakiem NUL i zawiera znak nowej linii, je¶li go napotkano.Gdy *lineptr jest równe NULL, funkcja getline() przydziela bufor dla umieszczenia w nim zawarto¶ci linii, który to bufor musi zostaæ zwolniony przez program u¿ytkownika. 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 bufor 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 znaku NUL. Warto¶æ ta mo¿e s³u¿yæ to wychwycenia znaków NUL zawartych w odczytanaj linii.Obie funkcje zwracaj± -1, gdy nie uda siê odczytaæ linii (w³±czaj±c w to próbê czytania na koñcu pliku).
B£ÊDY
- EINVAL
- B³êdne warto¶ci parametrów (n lub lineptr równe NULL, lub nieprawid³owy stream ).
PRZYK£AD
#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 d³ugo¶ci %zu :\n", read); printf("%s", line); } if (line) free(line); return EXIT_SUCCESS; }
ZGODNE Z
Zarówno getline(), jak i getdelim() s± rozszerzeniami GNU. S± one dostêpne od libc 4.6.27.ZOBACZ TAK¯E
read(2), fopen(3), fread(3), gets(3), fgets(3), scanf(3)Contenus ©2006-2023 Benjamin Poulain
Design ©2006-2023 Maxime Vantorre