著者:Abaka
出典:CSDN
オリジナル:https://blog.csdn.net/qq_39032310/article/details/83692746
問題を読むときのscanf入力バッファ上でコードを書くときに多くの学生が発生することがあります。
scanf関数の問題のこの種の分析は、scanf関数は(キーボードからデータを受信する)、標準入力ストリームであり、なぜ最初に来る、キーボード入力ボックスを含む入力バッファに受信されたデータは、これらの文字を入力しますあなたは%dを受けているときの影響を受けませんが、%cにエラーが発生します有効な文字は%cを受信するように、「%C」の入力、スペース、およびエスケープ文字であるため、これがあります。
例えば:
#include<stdio.h>
int main()
{
char a, b, c;
scanf("%c%c%c", &a, &b, &c);
printf("%c,%c,%c\n", a, b, c);
system("pause");
return 0;
}
これらの問題の解決:
- 空のバッファの第二の数を受信する前に、fflushは(STDIN); getchは(); GETCHAR();ランダム、fflushは(STDIN)は全てクリアされ、GETCHAR(であることができる)バッファがある場合、空の文字であります余分な文字は、通常使用されます
- %cの前にスペースを追加し、スペースは復帰文字やスペースを吸収することができます。
あなたがサイクル内にある場合は、複数の入力複数の文字がお勧めのscanf、「」、「分離され、そして時にキーボード入力を使用する必要があります」