Создание, Чтение, Запись в файл - C (СИ)

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

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

Здравствуйте! В задание говорится о двух файлах FileMathA.txt и FileMathB.txt содержащие матрицу 10х10 заполненные числами 1 2 3...n...98 98 100. Цель задание прочесть и сложить матрицы, создать файл FileSumma.txt и записать сумму. Вроде как все сделано правильно, но мне хочется послушать мнение экспертов, так ли это. Если в коде ошибки к которым не стоит привыкать на ранней стадии изучение программирования?
Листинг программы
  1. #include <stdio.h>
  2. #define COLUMNS 10
  3. #define ROWS 10
  4. #define ERROR_CLOSE "Ошибка закрытия файла"
  5. #define ERROR_OPEN "Ошибка открытия файла"
  6. int main(void) {
  7. int i, j, summa;
  8. int matric_MathA[ROWS][COLUMNS];
  9. int matric_MathB[ROWS][COLUMNS];
  10. char *File_MathA = "FileMathA.txt";
  11. char *File_MathB = "FileMathB.txt";
  12. char *File_Summa = "FileSumma.txt";
  13. FILE *open_MathA, *open_MathB, *open_Summa;
  14. // Создание FileMathA.txt & FileMathB.txt (если их нет) |*заполнение файлы числами 1 2 3...n...98 99 100
  15. /* int number = 1;
  16. open_MathA = fopen(File_MathA, "w");
  17. open_MathB = fopen(File_MathB, "w");
  18. if (open_MathA == NULL) {
  19. printf("%s %s\n", ERROR_OPEN, File_MathA);
  20. return 0;
  21. } else if (open_MathB == NULL) {
  22. printf("%s %s\n", ERROR_OPEN, File_MathB);
  23. return 0;
  24. }
  25.  
  26. for (i = 0; i < ROWS; i++) {
  27. for (j = 0; j < COLUMNS; j++)
  28. {
  29. matric_MathA[i][j] = number++;
  30. matric_MathB[i][j] = matric_MathA[i][j];
  31. fprintf(open_MathA, "%d", matric_MathA[i][j]);
  32. fprintf(open_MathB, "%d", matric_MathB[i][j]);
  33. if (j < COLUMNS-1) {
  34. fprintf(open_MathA, " ");
  35. fprintf(open_MathB, " ");
  36. }
  37. if (j == COLUMNS-1) {
  38. fprintf(open_MathA, "\n");
  39. fprintf(open_MathB, "\n");
  40. }
  41. }
  42. }
  43. if(fclose(open_MathA)) printf("%s %s\n", ERROR_CLOSE, File_MathA);
  44. if(fclose(open_MathB)) printf("%s %s\n", ERROR_CLOSE, File_MathB); */
  45. // Открытие файлов
  46. open_MathA = fopen(File_MathA, "r");
  47. open_MathB = fopen(File_MathB, "r");
  48. open_Summa = fopen(File_Summa, "w");
  49. if (open_MathA == NULL) {
  50. printf("%s %s", File_MathA, ERROR_OPEN);
  51. return 0;
  52. } else if (open_MathB == NULL) {
  53. printf("%s %s", File_MathB, ERROR_OPEN);
  54. return 0;
  55. } else if (open_Summa == NULL) {
  56. printf("%s %s", File_Summa, ERROR_OPEN);
  57. return 0;
  58. }
  59. // Чтения File_MathA & File_MathB, запись в File_Summa
  60. for (i = 0; i < ROWS; i++) {
  61. for (j = 0; j < COLUMNS; j++)
  62. {
  63. fscanf(open_MathA, "%d", &matric_MathA[i][j]);
  64. fscanf(open_MathB, "%d", &matric_MathB[i][j]);
  65. summa = matric_MathA[i][j] + matric_MathB[i][j];
  66. fprintf(open_Summa, "%d", summa);
  67. if (j == COLUMNS-1) fprintf(open_Summa,"\n");
  68. else if (j < COLUMNS-1) fprintf(open_Summa, " ");
  69. }
  70. }
  71. // Закрытие файлов
  72. if(fclose(open_MathA)) printf("%s %s\n", ERROR_CLOSE, File_MathA);
  73. if(fclose(open_MathB)) printf("%s %s\n", ERROR_CLOSE, File_MathB);
  74. if(fclose(open_Summa)) printf("%s %s\n", ERROR_CLOSE, File_Summa);
  75. printf("Сумма матрицы записана в %s.\n", File_Summa);
  76. return 0;
  77. }

Решение задачи: «Создание, Чтение, Запись в файл»

textual
Листинг программы
  1. fscanf(open_MathA, "%d", &a);
  2. fscanf(open_MathB, "%d", &b);
  3. fprintf(open_Summa, "%d ", a + b);

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

  1. open_MathA - открывает файл для чтения
  2. open_MathB - открывает файл для чтения
  3. open_Summa - открывает файл для записи
  4. fscanf(open_MathA,%d, &a); - считывает из файла MathA целочисленное значение и сохраняет его в переменной a
  5. fscanf(open_MathB,%d, &b); - считывает из файла MathB целочисленное значение и сохраняет его в переменной b
  6. fprintf(open_Summa,%d , a + b); - записывает в файл Summa значение переменной a+b с пробелом в конце
  7. Результат работы программы будет записан в файл Summa

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


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

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

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

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

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

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