Считать данные из файла и вывести на экран - 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Объявляем структуру данных geom, которая содержит переменные cos, sin и tg типа double
  3. В функции main() объявляем константную строку CFileName, которая содержит имя файла geom.txt, инициализируем переменные x, f, t и i
  4. Открываем файл geom.txt в режиме записи fopen(CFileName,w) и проверяем его на пустоту, если файл пустой, то выводим сообщение об ошибке и завершаем программу с кодом ошибки
  5. В цикле for от 0 до 628 с шагом 0.5 вычисляем значения переменных sin, cos и tg и записываем их в файл с помощью функции fprintf(f,%8.4f %8.4f %8.4f\n, x.sin, x.cos, x.tg)
  6. Закрываем файл fclose(f);
  7. Открываем файл geom.txt в режиме чтения fopen(CFileName,r)
  8. В цикле 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)
  9. Закрываем файл fclose(f);
  10. Завершаем программу с кодом 0, что означает успешное выполнение

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы