РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
525 of 815 menu

Функция fscanf

Функция fscanf читает данные из файла и сохраняет их в переменные в соответствии со строкой формата. Первым параметром функция принимает указатель на файловый поток, вторым - строку формата, а далее - адреса переменных, в которые следует записать прочитанные значения. Функция возвращает количество успешно прочитанных и присвоенных элементов или EOF при ошибке чтения.

Строка формата может содержать спецификаторы, такие как "%d" для целых чисел, "%f" для чисел с плавающей точкой, "%s" для строк и другие. Перед переменными обязательно нужно указывать оператор взятия адреса &, кроме случаев, когда переменная уже является указателем или массивом.

Синтаксис

int fscanf(FILE* stream, const char* format, ...);

Пример

Давайте создадим файл test.txt с двумя числами и прочитаем их с помощью функции fscanf:

#include <iostream> #include <cstdio> using namespace std; int main() { FILE* file = fopen("test.txt", "w"); fprintf(file, "12 34"); fclose(file); file = fopen("test.txt", "r"); int a, b; int res = fscanf(file, "%d %d", &a, &b); cout << "Read: " << res << endl; cout << "a = " << a << endl; cout << "b = " << b << endl; fclose(file); return 0; }

Результат выполнения кода:

"Read: 2" "a = 12" "b = 34"

Пример

Давайте прочитаем из файла строку и число:

#include <iostream> #include <cstdio> using namespace std; int main() { FILE* file = fopen("test.txt", "w"); fprintf(file, "abcde 12345"); fclose(file); file = fopen("test.txt", "r"); char str[100]; int num; int res = fscanf(file, "%s %d", str, &num); cout << "Read: " << res << endl; cout << "str = " << str << endl; cout << "num = " << num << endl; fclose(file); return 0; }

Результат выполнения кода:

"Read: 2" "str = abcde" "num = 12345"

Пример

Давайте проверим, что вернёт функция fscanf, если файл пуст:

#include <iostream> #include <cstdio> using namespace std; int main() { FILE* file = fopen("test.txt", "w"); fclose(file); file = fopen("test.txt", "r"); int a; int res = fscanf(file, "%d", &a); cout << "res = " << res << endl; fclose(file); return 0; }

Результат выполнения кода:

"res = -1"

Смотрите также

  • функция fprintf,
    которая записывает данные в файл
  • функция fopen,
    которая открывает файл
  • функция fclose,
    которая закрывает файл
  • функция fread,
    которая читает блок данных из файла
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить