次のコードでは、charからcharをファイルから読み込み、各charを2次元配列に格納しようとしています。2次元の配列を出力するC
#include <stdio.h>
#pragma warning(disable:4996)
int main(){
char grid[3][5];
FILE *file;
file = fopen("input.txt", "r");
int c;
if (file == NULL){
perror("Error in reading the file");
}
else{
int j=0;
for (int i = 0; i < 3; i++)
{
while (j<5)
{
grid[i][j] = fgetc(file);
j++;
}
j = 0;
}
}
int length = sizeof grid/sizeof grid[0][0];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%c %d %d \n", grid[i][j], i, j);
}
}
printf("\n");
return 0;
}
のように、私はルックスから読み込まれたファイル:私は結果は以下のようになりたい
ABCDE
FGHIJ
KLMNO
その後、私はその座標(iとj)と、アレイ内の各文字を印刷したいです:
A 0 0
B 0 1
...
しかし、私が得た本当の結果は次のとおりです。
A 0 0
B 0 1
C 0 2
D 0 3
E 0 4
1 0
F 1 1
G 1 2
H 1 3
I 1 4
J 2 0
2 1
K 2 2
L 2 3
M 2 4
ご覧のとおり、2番目の行には最初にスペースが、3番目の行には同じスペースが印刷されます。また、最後の2文字はNとOは印刷されません。誰かがこの問題を解決するのを助けることができますか?コード
for (int i = 0; i < 3; i++)
{
while (j<5)
{
grid[i][j] = fgetc(file);
j++;
}
j = 0;
}
のこのビットは、それが読み込ま必ず文字を作るためにチェックしますif文に追加するには
'\ n'を2文字読み込み、' char'配列の最後の2つの要素を取り出します。 –
ファイルの内容を 'ABCDEFGHIJKLMNO'に変更してください。正しく動作するはずです。 –