入力バッファ

1156 ワード

バッファを入力しますか?
#include
int main()
{
int a;
char c;
scanf("%d", &a);
scanf("%c", &c);

printf("정수는 %d\n", a);
printf("문자는 %c\n", c);
}
上記のコードを実行してデータを入れようとし、最初のscanfに整数を入力すると、2番目のscanfを経ずに直接出力されます.
これは、最初のスキャンfで整数を受信し、Enterを押すと、バッファにn(enter)のバッファが保持されるからである.その後、2番目のscanfが実行されると、バッファ内のn(enter)が受信され、直接スキップされます.
->n(エンタープライズ)はcに格納されます.
解決策
1.scanf("%d", &a); getchar(); scanf("%c", &c); こう書くとenterはgetcharに入ります。 %cの前にスペースを追加 scanf("%d", &a); scanf(" %c", &c); %cを追加してデータを破棄します。 scanf("%c%c",&c)を使用して、バッファを最初の%*cから受信しますが、破棄し、%cでデータを受信します。

参照として、整数型データを受信する場合、\nがバッファにある場合は無視される.(もちろん整数ではありません;;;)
scanf関数は、' '(띄어쓰기), '\n(엔터)', '/t(탭키)', '\0(NULL)'に遭遇するまでデータを受信する.%sバッファから値を受信し、有効データが出現したときから記憶を開始し、文字の読み取りを継続し、\nが出現したとき、\0(null)の保存を終了する.
妙技!
  • scanf("%[^\n]s",str);
    「n」文字に遭遇する前に、スペースを含む文字列入力を受け入れます.