ライブラリを含めました<stdio.h>
が、以下のコードは VS 2015 (および GNU GCC) で無限ループにつながります。
//Sample Code
void main() {
char check;
do {
check = '\0';
printf("Enter a character > ");
fflush(stdin);
scanf("%c", &check);
if (check == '\n') printf("\nERROR\n");
} while (check != '\n');
system("pause"); }
/*
Result:
Enter a character > r
Enter a character >
ERROR
Enter a character > ww
Enter a character > Enter a character >
ERROR
*/
しかし、以前のバージョンの VS (2013 年) でコンパイルすると、まったく問題なく動作しました。fflush
そのため、VS 2015 ではこの機能が機能しなくなったのではないかと疑っています。
申し訳ありませんが、私はC言語が初めてです。したがって、私が学んだことによると、使用fflush(stdin)
は実際には悪い考えであり、この関数は未定義の動作としてマークされています。
しかし、ここに私が興味をそそられている本当の質問があります:
fflush(stdin)
VS2015 で動作しなくなったのはなぜですか?fflush(stdin)
コードに含まれる do-while ループで使用できる「関数」を実装する方法は他にありますか (無限ループを防ぐため)。
ありがとうございました