Создание, Чтение, Запись в файл - 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);

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

  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