Считать данные из файла и вывести на экран - 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, что означает успешное выполнение