お世話になっております。
C言語でコンパイルは出来て実行できるのですが、いざLinuxで実行しようとすると、2番目のscanfに何も入力してなくても、プログラムが最後までいって終わってしまいます。
windows xpで同じプログラムをBorland C++ Compiler というコンパイラでコンパイルして実行すると、ちゃんと2番目のscanfの入力を受け付けてくれます。
ちなみにLinuxのコンパイラは gcc で、バージョンは4.8.2 です。
以下にプログラム文を載せます。
c
1#include <stdio.h> 2 3int main() { 4 int H, W; 5 int i; 6 char str[400][1600]; 7 8 printf("hi\n"); 9 scanf("%d %d", &H, &W); //1番目のscanf 10 fflush(stdin); 11 12 for(i=0; i<H; i++){ 13 scanf("%[0-9 ]", str[i]); //2番目のscanf 14 fflush(stdin); 15 } 16 17 printf("hello\n"); 18 19 return 0; 20}
windows xpでの実行例。
hi
2 3 ←1番目のscanf
332 42 23 ←2番目のscanf
432 23 42 ←2番目のscanf
hello
Linuxでの実行例。
hi
2 3
hello ←2番目のscanfが実行されずにhelloが表示されてる。
どういった理由でLinuxでは2番目のscanfが実行されないのでしょうか?
また、どうすれば2番目のscanfが実行できるようになるのでしょうか?
どなたか心当たりのある方は教えていただければと思います。
よろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/30 14:20 編集
2016/05/30 14:14
2016/05/30 14:21