Funkcja fscanf () w C ++ służy do odczytywania danych ze strumienia pliku.
Prototyp fscanf ()
int fscanf (PLIK * strumień, format const char *,…);
fscanf()
Funkcja odczytuje dane z pliku stream i przechowuje wartości do odpowiednich zmiennych.
Jest zdefiniowany w pliku nagłówkowym.
Parametry fscanf ()
stream
: Strumień pliku wejściowego, z którego zostaną odczytane dane.format
: Wskaźnik do ciągu znaków zakończonych znakiem null, który określa sposób odczytywania danych wejściowych. Składa się ze specyfikatorów formatu zaczynających się od%.Ciąg formatu składa się z następujących części:
Non whitespace characters
z wyjątkiem%, z których każdy zużywa jeden identyczny znak ze strumienia wejściowego. Może to spowodować niepowodzenie funkcji, jeśli następny znak w strumieniu nie jest równy.Whitespace character
: Wszystkie następujące po sobie białe znaki są traktowane jako pojedyncze białe znaki. Ponadto „ n”, „ t” i „” są uważane za takie same.Conversion specification
: Ma następujący format:- Początkowy znak%, który określa początek
- Opcjonalny *, nazywany znakiem tłumiącym przypisanie. Jeśli ten znak jest obecny, fscanf () nie przypisuje wyniku do żadnego odbieranego argumentu.
- Opcjonalna dodatnia liczba całkowita, która określa maksymalną szerokość pola. Określa maksymalną liczbę znaków, jaką fscanf () może wykorzystać podczas wykonywania konwersji określonej w bieżącej specyfikacji konwersji.
- Opcjonalny modyfikator długości określający rozmiar otrzymywanego argumentu.
- Specyfikator formatu konwersji.
Specyfikator formatu Opis % Dopasowuje dosłowne% do Dopasowuje pojedynczy znak lub wiele znaków. Jeśli zdefiniowano szerokość, dopasowuje dokładnie znaki szerokości. s Dopasowuje kolejne znaki niebędące białymi znakami. Jeśli zdefiniowano szerokość, dopasowuje dokładnie znaki szerokości lub do znalezienia pierwszej spacji. (zestaw) Dopasowuje niepusty ciąg znaków z podanego zestawu znaków. Jeśli występuje na początku zbioru, to dopasowywane są wszystkie znaki spoza zbioru. re Dopasowuje dziesiętną liczbę całkowitą. ja Dopasowuje liczbę całkowitą. o Dopasowuje ósemkową liczbę całkowitą bez znaku. X lub x Dopasowuje szesnastkową liczbę całkowitą bez znaku. u Dopasowuje dziesiętną liczbę całkowitą bez znaku. A lub a, E lub e, F lub f, G lub g Dopasowuje liczbę zmiennoprzecinkową. n Zwraca liczbę odczytanych dotychczas znaków. p Dopasowuje sekwencję znaków zdefiniowaną przez implementację definiującą wskaźnik.
%(*)(width)(length)specifier
- …: Inne dodatkowe argumenty za otrzymywaniem danych. Występują w sekwencji zgodnie ze specyfikatorem formatu.
fscanf () Zwracana wartość
- Jeśli się powiedzie,
fscanf()
funkcja zwraca liczbę pomyślnie przypisanych otrzymanych argumentów. - Jeśli błąd dopasowania wystąpi przed przypisaniem pierwszego argumentu odbierającego, zwraca zero.
- Jeśli błąd wejścia wystąpi przed przypisaniem pierwszego argumentu odbioru, zwracany jest EOF.
Przykład: Jak działa funkcja fscanf ()
#include int main () ( FILE *fp; char name(50); int age; fp = fopen("example.txt","w"); fprintf(fp, "%s %d", "Tim", 31); fclose(fp); fp = fopen("example.txt","r"); fscanf(fp, "%s %d", name, &age); fclose(fp); printf("Hello %s, You are %d years old", name, age); return 0; )
Po uruchomieniu programu możliwe wyjście to:
Witaj Tim, masz 31 lat