Считать данные из файла и вывести на экран - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Данная программа работает правильно, а вот считать с файла данные и вывести, не получается. Задания нету, это лично для собственного примера нужно, не могу до конца разобраться с файлами в Си.
Листинг программы
  1. struct geom
  2. {
  3. double cos;
  4. double sin;
  5. double tg;
  6. };
  7. int main(void)
  8. {
  9. struct geom x;
  10. FILE *f;
  11. double t = 0;
  12. f = fopen("geom.txt", "wb");
  13. if (f == NULL)
  14. {
  15. printf("Error creating file\n"); return 0;
  16. };
  17. fprintf(f, " Sin Cos Tg\n");
  18. for (int i = 1; i <= 628; i++)
  19. {
  20. x.sin = sin(t);
  21. x.cos = cos(t);
  22. x.tg = sin(t) / cos(t);
  23. fprintf(f, "%8.4f %8.4f %8.4f\n", x.sin, x.cos, x.tg);
  24. t += 0.5;
  25. };
  26. fclose(f);
  27. return 1;
Буду признателен за любую помощь, на форуме искал и перепробовал много вариантов, поэтому решил спросить напрямую.

Решение задачи: «Считать данные из файла и вывести на экран»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. struct geom {
  5.     double cos;
  6.     double sin;
  7.     double tg;
  8. };
  9.  
  10. int main() {
  11.     const char CFileName[] = "geom.txt";
  12.     struct geom x;
  13.     FILE* f;
  14.     double t = 0;
  15.     int i;
  16.  
  17.     f = fopen(CFileName, "w");
  18.     if (f == NULL) {
  19.         perror(CFileName);
  20.         return 1;
  21.     };
  22.  
  23.     //fprintf(f, "  Sin              Cos             Tg\n");
  24.     for (i = 0; i < 628; ++i) {
  25.         x.sin = sin(t);
  26.         x.cos = cos(t);
  27.         x.tg = x.sin / x.cos;
  28.         fprintf(f, "%8.4f %8.4f %8.4f\n", x.sin, x.cos, x.tg);
  29.         t += 0.5;
  30.     };
  31.     fclose(f);
  32.  
  33.     f = fopen(CFileName, "r");
  34.     while (fscanf(f, "%lf %lf %lf", &x.sin, &x.cos, &x.tg) == 3) {
  35.         fprintf(stdout, "%8.4f %8.4f %8.4f\n", x.sin, x.cos, x.tg);
  36.     }
  37.     fclose(f);
  38.  
  39.     return 0;
  40. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы