私は現在、.txtファイルから情報を取得し、それをマトリックスに格納する必要があるプログラムに取り組んでいます。ファイルを印刷するときは、次の数行のコードを使用します。
void read_maze(struct maze *mazePointer) {
FILE *fp;
fp = fopen("map1.txt", "r");
int counter = 0;
int column = 0;
char mazeContent[99999];
if(fp != NULL) {
while (fscanf(fp, "%c", &mazeContent[counter]) == 1){
int row = counter % 10;
printf("%c", mazeContent[counter]);
counter++;
if (row == 9) {
column ++;
}
}
fclose(fp);
}
}
「行」変数と「列」変数をまだ使用していないことに注意してください。これは、次の例のためだけのものです。このコード行から、次の出力が得られます。
##########
# # #
# ## #S#
# ########
# E#
##########
見た目は問題ありませんが、列と行の変数を追加するとすぐに、それらを行列に格納する必要があります。そのため、列と行を正しくフィットさせる必要があるため、次の出力が得られます。
#(0,0)#(0,1)#(0,2)#(0,3)#(0,4)#(0,5)#(0,6)#(0,7)#(0,8)#(0,9)
(1,0)#(1,1) (1,2) (1,3) (1,4) (1,5)#(1,6) (1,7) (1,8) (1,9)#(2,0)
(2,1)#(2,2) (2,3)#(2,4)#(2,5) (2,6) (2,7) (2,8)#(2,9)S(3,0)#(3,1)
(3,2)#(3,3) (3,4)#(3,5)#(3,6)#(3,7)#(3,8)#(3,9)#(4,0)#(4,1)#(4,2)
(4,3)#(4,4) (4,5) (4,6) (4,7) (4,8) (4,9) (5,0) (5,1)E(5,2)#(5,3)
(5,4)#(5,5)#(5,6)#(5,7)#(5,8)#(5,9)#(6,0)#(6,1)#(6,2)#(6,3)#(6,4)
これは同じではありません。お気づきのように、私の関数は2行目の先頭のスペースをカウントし、残りは.txtファイルにスペースがないときにカウントします。マトリックスの指定された場所で数字に署名できないため、すべてが完全に台無しになります。残念ながら私はそれを見つけることができないので、誰かが何が悪いのか知っていますか?