Как записать массив в файл, что добавить? - C (СИ)

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

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

Листинг программы
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include<windows.h>
  6. #define S 80
  7. #define F 50
  8. void write_file(char name[F]);
  9. int main(void)
  10. {
  11. SetConsoleCP(1251);
  12. SetConsoleOutputCP(1251);
  13. char fname[F];
  14. printf("Введiтьiм'я файлу:\n");
  15. scanf("%s%*c", &fname);
  16. write_file(fname);
  17. return 0;
  18. }
  19. void write_file(char name[F])
  20. {
  21. int str[10][S];
  22. FILE *fp;
  23.  
  24. if ((fp = fopen(name, "w+")) == NULL) {
  25. printf("Помилка при вiдкриттi файлу.\n");
  26. exit(1);
  27. }
  28. int i, j, x, min, temp, A[6][9];
  29.  
  30. srand(time(NULL));
  31. for (i = 0; i < 6; i++, putchar('\n'))
  32. {
  33. for (j = 0; j < 9; j++)
  34. printf("%4d", A[i][j] = rand() % 999);
  35.  
  36. fprintf(fp, " %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n", A[0][0], A[0][1], A[0][2], A[0][3], A[0][4], A[0][5], A[0][6], A[0][7], A[0][8], A[1][0], A[1][1], A[1][2], A[1][3], A[1][4], A[1][5], A[1][6], A[1][7], A[1][8], A[2][0], A[2][1], A[2][2], A[2][3], A[2][4], A[2][5], A[2][6], A[2][7], A[2][8], A[2][0], A[2][1], A[2][2], A[2][3], A[2][4], A[2][5], A[2][6], A[2][7], A[2][8], A[3][0], A[3][1], A[3][2], A[3][3], A[3][4], A[3][5], A[3][6], A[3][7], A[3][8], A[3][0], A[3][1], A[3][2], A[3][3], A[3][4], A[3][5], A[3][6], A[3][7], A[3][8], A[4][0], A[4][1], A[4][2], A[4][3], A[4][4], A[4][5], A[4][6], A[4][7], A[4][8]);
  37.  
  38. int B = max(A[0][0], A[0][1], A[1][1], A[1][2], A[3][4], A[3][5], A[4][5], A[4][6], A[5][7], A[5][8], A[6][8], A[6][9]);
  39. printf("%d %d %d %d %d %d %d %d %d %d ", A[0][0], A[0][1], A[1][1], A[1][2], A[3][4], A[3][5], A[4][5], A[4][6], A[5][7], A[5][8], A[6][8], A[6][9]);
  40. fprintf(fp, "\n%d %d %d %d %d %d %d %d %d %d \n", A[0][0], A[0][1], A[1][1], A[1][2], A[3][4], A[3][5], A[4][5], A[4][6], A[5][7], A[5][8], A[6][8], A[6][9]);
  41. printf("\n");
  42. printf("%d ---- MAX element\n", B);
  43. printf("\n");
  44. fprintf(fp, "%d ---- MAX element\n", B);
  45. fclose(fp);
  46. }
Нужно записать вот этот массив
Листинг программы
  1. srand(time(NULL));
  2. for (i = 0; i < 6; i++, putchar('\n'))
  3. {
  4. for (j = 0; j < 9; j++)
  5. printf("%4d", A[i][j] = rand() % 999);
в файл.
Листинг программы
  1. fprintf(fp, " %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n", A[0][0], A[0][1], A[0][2], A[0][3], A[0][4], A[0][5], A[0][6], A[0][7], A[0][8], A[1][0], A[1][1], A[1][2], A[1][3], A[1][4], A[1][5], A[1][6], A[1][7], A[1][8], A[2][0], A[2][1], A[2][2], A[2][3], A[2][4], A[2][5], A[2][6], A[2][7], A[2][8], A[2][0], A[2][1], A[2][2], A[2][3], A[2][4], A[2][5], A[2][6], A[2][7], A[2][8], A[3][0], A[3][1], A[3][2], A[3][3], A[3][4], A[3][5], A[3][6], A[3][7], A[3][8], A[3][0], A[3][1], A[3][2], A[3][3], A[3][4], A[3][5], A[3][6], A[3][7], A[3][8], A[4][0], A[4][1], A[4][2], A[4][3], A[4][4], A[4][5], A[4][6], A[4][7], A[4][8]);
вот такой отрывок кода работает, но не выглядит хорошо.. вот и не знаю как проще записать этот отрывок кода.

Решение задачи: «Как записать массив в файл, что добавить?»

textual
Листинг программы
  1. for (i = 0; i < 6; i++, putchar('\n'),fputc('\n', fp)) {
  2.     for (j = 0; j < 9; j++) {
  3.         printf("%4d", A[i][j] = rand() % 999);
  4.         fprintf(fp, "%4d ", A[i][j]);
  5.     }
  6. }

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

  1. Объявлены две переменные i и j типа int, которые будут использоваться в двух вложенных циклах.
  2. Внешний цикл for выполняется 6 раз. При каждой итерации внутреннего цикла, формируется строка из 9 чисел, которая будет записана в файл.
  3. Внутренний цикл for выполняется 9 раз для каждого элемента массива A[i].
  4. В каждой итерации внутреннего цикла, число из массива A[i][j] выводится на экран с помощью функции printf, и записывается в файл с помощью функции fprintf.
  5. Каждое число в строке записывается через пробел.
  6. После каждой строки чисел, в файл записывается символ новой строки '\n'.
  7. Функция rand() % 999 используется для генерации случайного числа от 0 до 999, которое затем присваивается элементам массива A[i][j].

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


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

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

6   голосов , оценка 4.333 из 5

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

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

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