ページ 1 / 1
とても初歩的な質問です。
Posted: 2016年5月21日(土) 09:17
by hukuda
二次元配列に文字を入れるだけのコードなのですが、実行すると
3 3 1
(00)
入力
(01)
(02)
入力
(10)
(11)
入力
(12)
(20)
入力
(21)
(22)
となってしまいます。どうしてこうなるのか教えて下さい。
コード:
#include<stdio.h>
int H,W,N;//Nは後で使う
int i,i2;
char map[1000][1000];
int main(void){
scanf("%d %d %d",&H,&W,&N);
for(i=0;i<H;i++){
for(i2=0;i2<W;i2++){
scanf("%c",&map[i][i2]);
printf("(%d%d)\n",i,i2);
}
}
return 0;
}
Re: とても初歩的な質問です。
Posted: 2016年5月21日(土) 12:01
by みけCAT
hukuda さんが書きました:二次元配列に文字を入れるだけのコードなのですが、実行すると
3 3 1
(00)
入力
(01)
(02)
入力
(10)
(11)
入力
(12)
(20)
入力
(21)
(22)
となってしまいます。
こちらではなりませんでした。

- 実行結果
- tss-test-20160521.png (25.77 KiB) 閲覧数: 1781 回
「入力」の代わりに1バイトを入れると、その文字と改行文字がバッファに入り、それがscanfで読み込まれ、
バッファに入っている文字が無くなった時点でブロックされるのでこうなるのでしょう。
Re: とても初歩的な質問です。
Posted: 2016年5月21日(土) 14:24
by hukuda
回答ありがとうございます。解決しました。