Считать данные из файла и вывести на экран - 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, что означает успешное выполнение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д