Тема: Використанням файлів та потоків
Завдання
Розробити програми на мові С для обробки зовнішніх файлів:
1)організувати створення двох зовнішніх файлів: //це завдання я виконав
- у перший текстовий файл записати розмірність матриці та значення елементів матриці;
- у другий текстовий файл записати не менше 5-ти символьних рядків;
2)зчитати матрицю з першого текстового файлу та обчислити і вивести добуток додатних елементів масиву а44[n][m]
//а з цим виникли труднощі, оскільки я не розумію як присвоїти розмірність матриці змінним n та m, і занести саму матрицю в a44[n][m]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int p1(void);
int p2(void);
int r1();
int main()
{
srand(time(0));
int p;
do
{
printf("Main menu\n");
printf("1. Create and write the first text file\n");
printf("2. Create and write the second text file\n");
printf("3. Process the first text file\n");
printf("0. Exit\n");
printf("Input number: ");
scanf("%d", &p);
switch(p)
{
case 1:
p1();
break;
case 2:
p2();
break;
case 3:
r1();
}
} while (p!=0);
return 0;
}
int p1(void)
{
FILE *f1=NULL;
int n, m;
char name1[20];
int matrix_row, matrix_col;
printf("Input file's name 1: ");
scanf("%s", name1);
f1 = fopen(name1, "w+");
if (f1 == NULL)
{
printf("Error opening file 1");
exit(1);
}
printf("Input dimension matrix n and m: ");
scanf("%d %d", &matrix_row, &matrix_col);
printf("n = %d, m = %d\n", matrix_row, matrix_col);
fprintf(f1, "%d\n", matrix_row);
fprintf(f1, "%d\n", matrix_col);
for (n=0; n<matrix_row; n++)
{
for (m=0; m<(matrix_col); m++)
{
int tmp = rand() % 21-10;
printf("%7d", tmp);
fprintf(f1, "%7d", tmp);
}
printf("\n");
fprintf(f1, "\n");
}
printf("File created %s\n", name1);
printf("\n");
fclose(f1);
return 0;
}
int p2(void)
{
FILE *f2=NULL;
char name2[20];
char c[78];
printf("Input file's name 2: ");
scanf("%s", name2);
f2 = fopen(name2, "w+");
if (f2 == NULL)
{
printf("Error opening file 2");
exit(2);
}
printf("Enter a blank line to stop\n");
getchar();
while (1)
{
gets(c);
if (strlen(c)==0)
break;
fputs(c, f2);
fputs("\n", f2);
}
fclose(f2);
printf("File created %s\n", name2);
printf("\n");
return 0;
}
int r1()
{
FILE *f1=NULL;
int n, m;
char a44[n][m];
char name1[20];
printf("Input file's name 1: ");
scanf("%s", name1);
f1 = fopen(name1, "r");
if (f1 == NULL)
{
printf("Error opening file 1");
exit(1);
}
}