ユーザーが入力モードを終了するために -1 を入力するまで、配列に入力を取得しようとしています。
-1 が入力されたときに、このコード ブロックで奇妙なことが起こっていますが、少なくとも 2 つの値が入力された後でのみ発生しています。
#define ARRAYSIZE 100
int input[ARRAYSIZE];
int i=0;
do {
printf("Enter data #%d or -1 to exit: ", i);
scanf("%d", &input[i]);
} while(input[i++] != -1 && i<ARRAYSIZE)
コードは無期限にハングします。2 つの別々のアーキテクチャでコンパイルして実行しましたが、gdb で実行すると問題は発生しません。
print ステートメントを挿入すると、実際にコードが scanf ステートメントでハングしていることが明らかになりました。
誰がこれを引き起こしているのか考えていますか?