table of contents
| GETLINE(3) | Podręcznik programisty Linuksa | GETLINE(3) | 
NAZWA¶
getline, getdelim - wprowadzanie łańcuchów rozgraniczonychSKŁ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)):
- Od glibc 2.10:
 - _POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700
 
- 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.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.
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. Wartość ta może służyć to wychwycenia znaków null zawartych w odczytanej linii.BŁĘDY¶
- EINVAL
 - Błędne wartości parametrów (n lub lineptr równe NULL lub nieprawidłowy stream).
 
WERSJE¶
Powyższe funkcje są dostępne od libc 4.6.27.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 *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("Pobrano linię o długości %zu :\n", read);
        printf("%s", line);
    }
    free(line);
    exit(EXIT_SUCCESS);
}
ZOBACZ TAKŻE¶
read(2), fgets(3), fopen(3), fread(3), gets(3), scanf(3)O STRONIE¶
Angielska wersja tej strony pochodzi z wydania 3.40 projektu Linux man-pages. Opis projektu oraz informacje dotyczące zgłaszania błędów można znaleźć pod adresem http://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> i Robert Luberda <robert@debian.org>. 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ą 3.40 oryginału.| 2010-06-12 | GNU |