Создание, Чтение, Запись в файл - C (СИ)
Формулировка задачи:
Здравствуйте! В задание говорится о двух файлах FileMathA.txt и FileMathB.txt содержащие матрицу 10х10 заполненные числами 1 2 3...n...98 98 100. Цель задание прочесть и сложить матрицы, создать файл FileSumma.txt и записать сумму.
Вроде как все сделано правильно, но мне хочется послушать мнение экспертов, так ли это. Если в коде ошибки к которым не стоит привыкать на ранней стадии изучение программирования?
#include <stdio.h> #define COLUMNS 10 #define ROWS 10 #define ERROR_CLOSE "Ошибка закрытия файла" #define ERROR_OPEN "Ошибка открытия файла" int main(void) { int i, j, summa; int matric_MathA[ROWS][COLUMNS]; int matric_MathB[ROWS][COLUMNS]; char *File_MathA = "FileMathA.txt"; char *File_MathB = "FileMathB.txt"; char *File_Summa = "FileSumma.txt"; FILE *open_MathA, *open_MathB, *open_Summa; // Создание FileMathA.txt & FileMathB.txt (если их нет) |*заполнение файлы числами 1 2 3...n...98 99 100 /* int number = 1; open_MathA = fopen(File_MathA, "w"); open_MathB = fopen(File_MathB, "w"); if (open_MathA == NULL) { printf("%s %s\n", ERROR_OPEN, File_MathA); return 0; } else if (open_MathB == NULL) { printf("%s %s\n", ERROR_OPEN, File_MathB); return 0; } for (i = 0; i < ROWS; i++) { for (j = 0; j < COLUMNS; j++) { matric_MathA[i][j] = number++; matric_MathB[i][j] = matric_MathA[i][j]; fprintf(open_MathA, "%d", matric_MathA[i][j]); fprintf(open_MathB, "%d", matric_MathB[i][j]); if (j < COLUMNS-1) { fprintf(open_MathA, " "); fprintf(open_MathB, " "); } if (j == COLUMNS-1) { fprintf(open_MathA, "\n"); fprintf(open_MathB, "\n"); } } } if(fclose(open_MathA)) printf("%s %s\n", ERROR_CLOSE, File_MathA); if(fclose(open_MathB)) printf("%s %s\n", ERROR_CLOSE, File_MathB); */ // Открытие файлов open_MathA = fopen(File_MathA, "r"); open_MathB = fopen(File_MathB, "r"); open_Summa = fopen(File_Summa, "w"); if (open_MathA == NULL) { printf("%s %s", File_MathA, ERROR_OPEN); return 0; } else if (open_MathB == NULL) { printf("%s %s", File_MathB, ERROR_OPEN); return 0; } else if (open_Summa == NULL) { printf("%s %s", File_Summa, ERROR_OPEN); return 0; } // Чтения File_MathA & File_MathB, запись в File_Summa for (i = 0; i < ROWS; i++) { for (j = 0; j < COLUMNS; j++) { fscanf(open_MathA, "%d", &matric_MathA[i][j]); fscanf(open_MathB, "%d", &matric_MathB[i][j]); summa = matric_MathA[i][j] + matric_MathB[i][j]; fprintf(open_Summa, "%d", summa); if (j == COLUMNS-1) fprintf(open_Summa,"\n"); else if (j < COLUMNS-1) fprintf(open_Summa, " "); } } // Закрытие файлов if(fclose(open_MathA)) printf("%s %s\n", ERROR_CLOSE, File_MathA); if(fclose(open_MathB)) printf("%s %s\n", ERROR_CLOSE, File_MathB); if(fclose(open_Summa)) printf("%s %s\n", ERROR_CLOSE, File_Summa); printf("Сумма матрицы записана в %s.\n", File_Summa); return 0; }
Решение задачи: «Создание, Чтение, Запись в файл»
textual
Листинг программы
fscanf(open_MathA, "%d", &a); fscanf(open_MathB, "%d", &b); fprintf(open_Summa, "%d ", a + b);
Объяснение кода листинга программы
open_MathA
- открывает файл для чтенияopen_MathB
- открывает файл для чтенияopen_Summa
- открывает файл для записиfscanf(open_MathA,
%d, &a);
- считывает из файлаMathA
целочисленное значение и сохраняет его в переменнойa
fscanf(open_MathB,
%d, &b);
- считывает из файлаMathB
целочисленное значение и сохраняет его в переменнойb
fprintf(open_Summa,
%d, a + b);
- записывает в файлSumma
значение переменнойa+b
с пробелом в конце- Результат работы программы будет записан в файл
Summa
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д