C言語のscanf入力バッファ問題[予約]

著者: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;
}

これらの問題の解決:

  1. 空のバッファの第二の数を受信する前に、fflushは(STDIN); getchは(); GETCHAR();ランダム、fflushは(STDIN)は全てクリアされ、GETCHAR(であることができる)バッファがある場合、空の文字であります余分な文字は、通常使用されます
  2. %cの前にスペースを追加し、スペースは復帰文字やスペースを吸収することができます。

あなたがサイクル内にある場合は、複数の入力複数の文字がお勧めのscanf、「」、「分離され、そして時にキーボード入力を使用する必要があります」

公開された73元の記事 ウォン称賛90 ビュー40000 +

おすすめ

転載: blog.csdn.net/Hanoi_ahoj/article/details/85279400