Как записать массив в файл, что добавить? - C (СИ)
Формулировка задачи:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include<windows.h>
#define S 80
#define F 50
void write_file(char name[F]);
int main(void)
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char fname[F];
printf("Введiтьiм'я файлу:\n");
scanf("%s%*c", &fname);
write_file(fname);
return 0;
}
void write_file(char name[F])
{
int str[10][S];
FILE *fp;
if ((fp = fopen(name, "w+")) == NULL) {
printf("Помилка при вiдкриттi файлу.\n");
exit(1);
}
int i, j, x, min, temp, A[6][9];
srand(time(NULL));
for (i = 0; i < 6; i++, putchar('\n'))
{
for (j = 0; j < 9; j++)
printf("%4d", A[i][j] = rand() % 999);
fprintf(fp, " %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n", A[0][0], A[0][1], A[0][2], A[0][3], A[0][4], A[0][5], A[0][6], A[0][7], A[0][8], A[1][0], A[1][1], A[1][2], A[1][3], A[1][4], A[1][5], A[1][6], A[1][7], A[1][8], A[2][0], A[2][1], A[2][2], A[2][3], A[2][4], A[2][5], A[2][6], A[2][7], A[2][8], A[2][0], A[2][1], A[2][2], A[2][3], A[2][4], A[2][5], A[2][6], A[2][7], A[2][8], A[3][0], A[3][1], A[3][2], A[3][3], A[3][4], A[3][5], A[3][6], A[3][7], A[3][8], A[3][0], A[3][1], A[3][2], A[3][3], A[3][4], A[3][5], A[3][6], A[3][7], A[3][8], A[4][0], A[4][1], A[4][2], A[4][3], A[4][4], A[4][5], A[4][6], A[4][7], A[4][8]);
int B = max(A[0][0], A[0][1], A[1][1], A[1][2], A[3][4], A[3][5], A[4][5], A[4][6], A[5][7], A[5][8], A[6][8], A[6][9]);
printf("%d %d %d %d %d %d %d %d %d %d ", A[0][0], A[0][1], A[1][1], A[1][2], A[3][4], A[3][5], A[4][5], A[4][6], A[5][7], A[5][8], A[6][8], A[6][9]);
fprintf(fp, "\n%d %d %d %d %d %d %d %d %d %d \n", A[0][0], A[0][1], A[1][1], A[1][2], A[3][4], A[3][5], A[4][5], A[4][6], A[5][7], A[5][8], A[6][8], A[6][9]);
printf("\n");
printf("%d ---- MAX element\n", B);
printf("\n");
fprintf(fp, "%d ---- MAX element\n", B);
fclose(fp);
} srand(time(NULL));
for (i = 0; i < 6; i++, putchar('\n'))
{
for (j = 0; j < 9; j++)
printf("%4d", A[i][j] = rand() % 999);fprintf(fp, " %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n %4d %4d %4d %4d %4d %4d %4d %4d %4d\n", A[0][0], A[0][1], A[0][2], A[0][3], A[0][4], A[0][5], A[0][6], A[0][7], A[0][8], A[1][0], A[1][1], A[1][2], A[1][3], A[1][4], A[1][5], A[1][6], A[1][7], A[1][8], A[2][0], A[2][1], A[2][2], A[2][3], A[2][4], A[2][5], A[2][6], A[2][7], A[2][8], A[2][0], A[2][1], A[2][2], A[2][3], A[2][4], A[2][5], A[2][6], A[2][7], A[2][8], A[3][0], A[3][1], A[3][2], A[3][3], A[3][4], A[3][5], A[3][6], A[3][7], A[3][8], A[3][0], A[3][1], A[3][2], A[3][3], A[3][4], A[3][5], A[3][6], A[3][7], A[3][8], A[4][0], A[4][1], A[4][2], A[4][3], A[4][4], A[4][5], A[4][6], A[4][7], A[4][8]);
Решение задачи: «Как записать массив в файл, что добавить?»
textual
Листинг программы
for (i = 0; i < 6; i++, putchar('\n'),fputc('\n', fp)) {
for (j = 0; j < 9; j++) {
printf("%4d", A[i][j] = rand() % 999);
fprintf(fp, "%4d ", A[i][j]);
}
}
Объяснение кода листинга программы
- Объявлены две переменные i и j типа int, которые будут использоваться в двух вложенных циклах.
- Внешний цикл for выполняется 6 раз. При каждой итерации внутреннего цикла, формируется строка из 9 чисел, которая будет записана в файл.
- Внутренний цикл for выполняется 9 раз для каждого элемента массива A[i].
- В каждой итерации внутреннего цикла, число из массива A[i][j] выводится на экран с помощью функции printf, и записывается в файл с помощью функции fprintf.
- Каждое число в строке записывается через пробел.
- После каждой строки чисел, в файл записывается символ новой строки '\n'.
- Функция rand() % 999 используется для генерации случайного числа от 0 до 999, которое затем присваивается элементам массива A[i][j].