Создание файла, компонентами которого являются целочисленные массивы - 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;
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется размер массива (SIZE)
- Открывается файл для записи в двоичном формате (fp = fopen(file,
wb
)) - Выделяется память под двумерный массив (array = (int *) calloc (SIZE, sizeof (int )))
- Выделяется память под каждый элемент массива (for (i = 0; i < SIZE; i++) array[i] = (int *) calloc (SIZE, sizeof (int)))
- Заполняется массив значениями от 0 до SIZE-1 (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');}) - Освобождается память (for (i = 0; i < SIZE; i++) free(array[i]); free(array))
- Закрывается файл (fclose(fp))
- Завершается программа (return 0)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д