Работа с файлами - C (СИ)
Формулировка задачи:
Здрасьте! Есть файл (скрин скинул), в нем мне нужны только значения переменных. У меня получилось считать первую строку:Но как поступить дальше я не знаю, ведь теперь, как я понимаю, переменные лучше организовать в структуру:Я начинаю паниковать
fscanf(m, "%*[^0-9]%f%*[^0-9]%f%*[^0-9]%d", &d_t, &k0, &T);
#define N 3 struct variable { float u,m,f,h; }a[N];
Решение задачи: «Работа с файлами»
textual
Листинг программы
#define N 3 struct variable { float u,m,f,h; }a[N]; ... int Op = 0; FILE *m; ... while (!feof(m)) { for (i = 0; i < N; i++) { fscanf(m,"%*[^0-9]%f", &a[i].u); Op += 1; } for (i = 0; i < N; i++) { fscanf(m, "%*[^0-9]%f", &a[i].m); Op += 1; } for (i = 0; i < N; i++) { fscanf(m, "%*[^0-9]%f", &a[i].f); Op += 1; } for (i = 0; i < N; i++) { fscanf(m, "%*[^0-9]%f", &a[i].h); Op += 1; } if (Op != 12) { puts("Некоторые данные отсутствуют"); return -1; } } ...
Объяснение кода листинга программы
- Объявлен массив структур
variable
с именемa
и размеромN
(3), где каждая структура содержит поляu
,m
,f
иh
типаfloat
. - Инициализирована переменная
Op
(обновляющаяся при чтении файла) и установлена в значение 0. - Открыт файл
m
для чтения с помощью функцииfopen
. - В цикле
while
происходит чтение данных из файлаm
с помощью функцииfscanf
. - В каждой итерации цикла
for
считывается одно поле каждой структурыvariable
в массивеa
. - Переменная
Op
увеличивается на 1 после каждого успешного считывания поля. - После каждой итерации цикла
for
проверяется, что все 12 полей были успешно считаны, и если это не так, выводится сообщение об ошибке и возвращается -1. - После выхода из цикла
while
закрывается файлm
с помощью функцииfclose
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д