C/fgets

Z Wikibooks, biblioteki wolnych podręczników.

< C

Spis treści

[edytuj] Deklaracja

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


[edytuj] Plik nagłówkowy

stdio.h

[edytuj] Opis

Funkcja fgets() czyta kolejne znaki ze strumienia stream (usuwa je stamtąd) 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'.


[edytuj] Wartość zwracana

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.


[edytuj] Uwagi

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().

[edytuj] Przykład użycia

Poniższy program
#include <stdio.h>
int main (void)
{
    int i;
    char napis[50], *n;
    for (i = 0; i < 2; ++i) 
    {
        n = fgets (napis, 15, stdin);    /* czytamy ze standardowego wejścia */ 
        if (n != NULL) 
        {
            printf ("%s", napis);
            if (feof (stdin))
                printf ("\nkoniec pliku\n");
        }
        else
            printf ("blad odczytu\n");
    }
    return 0;
}


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

[edytuj] Zobacz też

gets, fputs