Создание файла, компонентами которого являются целочисленные массивы - C (СИ)

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

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

Создать файл F1, компонентами которого являются целочисленные массивы a1,.., a10, закрыть его.

Решение задачи: «Создание файла, компонентами которого являются целочисленные массивы»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
#define SIZE 10
 
int main (void)
{
    char file[] = "output.bin";
    int ** array;
    int i, j;
    FILE * fp;
    if ((fp = fopen (file, "wb")) == NULL){
        printf ("Cannot open file!\n");
        getchar ();
        exit (1);
    }
    array = (int **) calloc (SIZE, sizeof (int *));
    for (i = 0; i < SIZE; i++)
        array[i] = (int *) calloc (SIZE, sizeof (int));
    for (i = 0; i < SIZE; i++)
        for (j = 0; j < SIZE; j++)
            array[i][j] = j;
    for (i = 0; i < SIZE; i++)
        fwrite (array[i], sizeof(int), SIZE, fp);
    fclose (fp);
    for (i = 0; i < SIZE; i++)
        free (array[i]);
    free (array);
    fp = fopen (file, "rb");
    array = (int **) calloc (SIZE, sizeof (int *));
    for (i = 0; i < SIZE; i++)
        array[i] = (int *) calloc (SIZE, sizeof (int));
    for (i = 0; i < SIZE; i++)
        fread (array[i], sizeof (int), SIZE, fp);
    for (i = 0; i < SIZE; i++){
        if (i != 0)
            putchar ('\n');
        for (j = 0; j < SIZE; j++)
            printf ("%4d", array[i][j]);
        putchar ('\n');
    }
   
    return 0;    
}

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

  1. Включаются необходимые заголовочные файлы
  2. Определяется размер массива (SIZE)
  3. Открывается файл для записи в двоичном формате (fp = fopen(file, wb))
  4. Выделяется память под двумерный массив (array = (int *) calloc (SIZE, sizeof (int )))
  5. Выделяется память под каждый элемент массива (for (i = 0; i < SIZE; i++) array[i] = (int *) calloc (SIZE, sizeof (int)))
  6. Заполняется массив значениями от 0 до SIZE-1 (for (i = 0; i < SIZE; i++) for (j = 0; j < SIZE; j++) array[i][j] = j)
  7. Записывается массив в файл (for (i = 0; i < SIZE; i++) fwrite(array[i], sizeof(int), SIZE, fp))
  8. Закрывается файл (fclose(fp))
  9. Освобождается память (for (i = 0; i < SIZE; i++) free(array[i]); free(array))
  10. Открывается файл для чтения (fp = fopen(file, rb))
  11. Снова выделяется память под двумерный массив (array = (int *) calloc (SIZE, sizeof (int )))
  12. Снова выделяется память под каждый элемент массива (for (i = 0; i < SIZE; i++) array[i] = (int *) calloc (SIZE, sizeof (int)))
  13. Считывается массив из файла (for (i = 0; i < SIZE; i++) fread(array[i], sizeof (int), SIZE, fp))
  14. Выводится содержимое массива (for (i = 0; i < SIZE; i++){ if (i != 0) putchar ('\n'); for (j = 0; j < SIZE; j++) printf (%4d, array[i][j]); putchar ('\n');})
  15. Освобождается память (for (i = 0; i < SIZE; i++) free(array[i]); free(array))
  16. Закрывается файл (fclose(fp))
  17. Завершается программа (return 0)

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


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

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

13   голосов , оценка 4.154 из 5
Похожие ответы