数字といくつかの文字の行列であるinput1.txtというファイルがあります。各チャーターが1つのセルになるように2D配列に読み込んで保存しようとしています。ファイルを2次元配列に読み込む
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]
は、それは読んでいないようです1行目ですが、インデックスの点では私はそれがOKだと思います。私はC.に新しいです。誰か助けてもらえますか?事前におねがいします。
あなたの 'numOfLines'は誤った名前で、最初の行の文字数を数えます。したがって、それらを読む!読書を続けると、最初からやり直すのはなぜだと思いますか?マジック? ['rewind()'](https://linux.die.net/man/3/rewind)を試してください。 –
'numOfLines()'関数はファイルを最後まで読み込みます。再読み込みをしたい場合は、先頭に戻る必要があります(これは通常のファイルでは可能ですが、その他の種類のストリームではありません)。 –
@JohnBollinger **このコードの混乱を招く**最後には読まない** –