Считать данные из файла и вывести на экран - C (СИ)
Формулировка задачи:
Данная программа работает правильно, а вот считать с файла данные и вывести, не получается. Задания нету, это лично для собственного примера нужно, не могу до конца разобраться с файлами в Си.
Буду признателен за любую помощь, на форуме искал и перепробовал много вариантов, поэтому решил спросить напрямую.
struct geom { double cos; double sin; double tg; }; int main(void) { struct geom x; FILE *f; double t = 0; f = fopen("geom.txt", "wb"); if (f == NULL) { printf("Error creating file\n"); return 0; }; fprintf(f, " Sin Cos Tg\n"); for (int i = 1; i <= 628; i++) { x.sin = sin(t); x.cos = cos(t); x.tg = sin(t) / cos(t); fprintf(f, "%8.4f %8.4f %8.4f\n", x.sin, x.cos, x.tg); t += 0.5; }; fclose(f); return 1;
Решение задачи: «Считать данные из файла и вывести на экран»
textual
Листинг программы
#include <stdio.h> #include <math.h> struct geom { double cos; double sin; double tg; }; int main() { const char CFileName[] = "geom.txt"; struct geom x; FILE* f; double t = 0; int i; f = fopen(CFileName, "w"); if (f == NULL) { perror(CFileName); return 1; }; //fprintf(f, " Sin Cos Tg\n"); for (i = 0; i < 628; ++i) { x.sin = sin(t); x.cos = cos(t); x.tg = x.sin / x.cos; fprintf(f, "%8.4f %8.4f %8.4f\n", x.sin, x.cos, x.tg); t += 0.5; }; fclose(f); f = fopen(CFileName, "r"); while (fscanf(f, "%lf %lf %lf", &x.sin, &x.cos, &x.tg) == 3) { fprintf(stdout, "%8.4f %8.4f %8.4f\n", x.sin, x.cos, x.tg); } fclose(f); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем структуру данных
geom
, которая содержит переменныеcos
,sin
иtg
типаdouble
- В функции
main()
объявляем константную строкуCFileName
, которая содержит имя файлаgeom.txt
, инициализируем переменныеx
,f
,t
иi
- Открываем файл
geom.txt
в режиме записиfopen(CFileName,
w)
и проверяем его на пустоту, если файл пустой, то выводим сообщение об ошибке и завершаем программу с кодом ошибки - В цикле
for
от 0 до 628 с шагом 0.5 вычисляем значения переменныхsin
,cos
иtg
и записываем их в файл с помощью функцииfprintf(f,
%8.4f %8.4f %8.4f\n, x.sin, x.cos, x.tg)
- Закрываем файл
fclose(f);
- Открываем файл
geom.txt
в режиме чтенияfopen(CFileName,
r)
- В цикле
while
с помощью функцииfscanf(f,
%lf %lf %lf, &x.sin, &x.cos, &x.tg)
считываем значения переменных из файла и выводим их на экран с помощью функцииfprintf(stdout,
%8.4f %8.4f %8.4f\n, x.sin, x.cos, x.tg)
- Закрываем файл
fclose(f);
- Завершаем программу с кодом 0, что означает успешное выполнение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д