Итак, я пытаюсь сделать так, чтобы у меня было два файла с массивом 64x64, разделенных пробелами и новыми строками. Я хочу прочитать файлы и поместить их в структуру, содержащую два массива 64x64. Файлы будут выглядеть примерно так:
2 5 1 6 2 ... 6
3 2 9 5 1 ... 8
.
.
2 4 1 5 2 ... 5
И вот как я думал, что сделаю это
int
getFromFile(char *fileNameMatrixA, char *filenameMatrixB, struct Matrises *matrix)
{
FILE *fileA, *fileB;
char buffer[BUFFER_LEN];
int counter = 0;
if((fileA = fopen(fileNameMatrixA, "r")) == NULL)
{
return 1;
}
if((fileB = fopen(fileNameMatrixB, "r")) == NULL)
{
fclose(fileA);
return 2;
}
while(fgets(buffer, sizeof(buffer), fileA) != NULL)
{
if(sscanf(buffer, "%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d", matrix->matrixA[counter][0], matrix->matrixA[counter][1], matrix->matrixA[counter][2], matrix->matrixA[counter][3], ... , matrix->matrixA[counter][63]) != 64)
{
fclose(fileA);
fclose(fileB);
return 3;
}
counter++;
}
counter = 0;
while(fgets(buffer, sizeof(buffer), fileB) != NULL)
{
if(sscanf(buffer, "%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d\s%d", matrix->matrixB[counter][0], matrix->matrixB[counter][1], matrix->matrixB[counter][2], matrix->matrixB[counter][3], ... , matrix->matrixB[counter][63]) != 64)
{
fclose(fileA);
fclose(fileB);
return 4;
}
counter++;
}
fclose(fileA);
fclose(fileB);
return 0;
}
Я думаю, что все вы видите проблему .. Это никоим образом не является хорошим способом сделать это. Но я не знаю другого способа сделать это, не будучи таким словесным.
Есть ли способ сделать это более эффективным и чистым?