我有一个名为input1.txt的文件,它是一个数字和一些字母的矩阵。我试图读取并将其存储在二维数组中,以便每个章程都是1个单元格。这是我的文本文件:C将文件读入二维数组
1111S11110
0000010001
110100010d
t001111110
0100000001
0111111101
1111111101
00000D01T1
0111110001
0000E01110
这里是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Function for finding the array length
int numOfLines(FILE *const mazeFile){
int c, count;
count = 0;
for(;;){
c = fgetc(mazeFile);
if(c == EOF || c == '\n')
break;
++count;
}
return count;
}
// Main Function
int main(int argc, char **argv)
{
// Opening the Matrix File
FILE *mazeFile;
mazeFile = fopen("input1.txt", "r");
if(mazeFile == NULL)
return 1;
int matrixSize = numOfLines(mazeFile);
// Reading text file into 2D array
int i,j;
char mazeArray [matrixSize][matrixSize];
for(i=0;i<matrixSize;i++){
for(j=0;j<matrixSize;j++){
fscanf(mazeFile,"%c", &mazeArray[i][j]);
}
}
for(i=0;i<matrixSize;i++){
for(j=0;j<matrixSize;j++){
printf("%c",mazeArray[i][j]);
}
}
fclose(mazeFile);
return 0;
}
但是我的控制台输出就是这样,当我打印出来:
0000010001
110100010d
t001111110
0100000001
0111111101
1111111101
00000D01T1
0111110001
[email protected]
看来它不读第一行,但在索引方面,我认为它是好的。我是新来的C.请任何人请帮助。提前感谢。
您的'numOfLines'是一个用词不当,它计数第一行中的字符数。因此,读它们!你为什么认为如果你继续阅读,你会从头开始重新开始?魔法?试试['rewind()'](https://linux.die.net/man/3/rewind)。 –
您的'numOfLines()'函数将文件读取到最后。如果你想重新阅读它,你需要回到开始(这可以用于普通文件,但不适用于其他可能的流类型)。 –
@JohnBollinger它**不会**读到最后,这增加了这个代码的混乱...... –