C/fgets

Z Wikibooks, biblioteki wolnych podręczników.
< C

Deklaracja[edytuj]

char *fgets(char *str, int size, FILE *stream);


Plik nagłówkowy[edytuj]

stdio.h

Opis[edytuj]

Funkcja fgets() czyta kolejne znaki ze strumienia stream i umieszcza je w tablicy znakowej wskazywanej przez str. Czytanie przerywa, gdy przeczyta size - 1 znaków, natrafi na koniec pliku lub znak końca linii (znak ten jest zapisywany do str). Na końcu fgets() dopisuje znak '\0'.

Wartość zwracana[edytuj]

Wartością funkcji fgets(str, size, stream) jest str w przypadku sukcesu. W przypadku błędu lub natrafienia na koniec pliku przed przeczytaniem jakiegokolwiek znaku wartością funkcji jest NULL.


Uwagi[edytuj]

Funkcja fgets() nie odróżnia sytuacji osiągnięcia końca pliku od błędu odczytu pliku. Jeśli potrzebne jest ich rozróżnienie użyj funkcji feof() lub ferror().

Przykład użycia[edytuj]

#include <stdio.h>

int main()
{
    int i;
    const int max_n= 50;
    const int linie= 2;
    char napis[max_n], *result;
    for (i = 1; i <= linie; ++i) 
    {
        result = fgets (napis, max_n, stdin);   // czytamy ze standardowego wejścia
        if (result != NULL) 
        {
            printf ("%d %s", i, napis);
            if (feof (stdin))
                printf ("\n%d koniec pliku\n", i);
        }
        else
            printf ("\n%d blad odczytu\n", i);
    }
    return 0;
}

Program wczytuje 2 linie i, w przypadku wystąpienia, sygnalizuje koniec pliku lub błąd odczytu.

uruchomiony dla swego tekstu źródłowego daje w wyniku:
1 #include <stdio.h>
2
uruchomiony dla pliku:
Ala ma kota.
Ola ma psa.<znak nowej linii><koniec pliku>
da w wyniku:
1 Ala ma kota.
2 Ola ma psa.
po uruchomieniu go dla pliku:
Ala ma kota.
Ola ma psa.<koniec pliku>
otrzymujemy:
1 Ala ma kota.
2 Ola ma psa. 
2 koniec pliku 
w przypadku pliku:
Ala ma kota.<znak nowej linii><koniec pliku>
otrzymujemy:
1 Ala ma kota.
2 blad odczytu
natomiast dla pliku:
Ala ma kota.<koniec pliku>
otrzymujemy:
1 Ala ma kota.
1 koniec pliku
2 blad odczytu

Zobacz też[edytuj]

gets, fputs