Deklaracja

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


Plik nagłówkowy

edytuj
stdio.h
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.


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