我有一個名爲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它**不會**讀到最後,這增加了這個代碼的混亂...... –