#include<stdio.h>
int main(){
char a;
printf("①文字を入力:");
scanf("%c",&a);
printf("①入力された文字は:%c\n",a);
//fflush(stdin);
printf("②文字を入力:");
scanf("%c",&a);
printf("②入力された文字は:%c\n",a);
//fflush(stdin);
printf("③文字を入力:");
scanf("%c",&a);
printf("③入力された文字は:%c\n",a);
//fflush(stdin);
printf("④文字を入力:");
scanf("%c",&a);
printf("④入力された文字は:%c\n",a);
return 0;
}
①文字を入力:a
①入力された文字は:a
②文字を入力:②入力された文字は:
③文字を入力:b
③入力された文字は:b
④文字を入力:④入力された文字は:
となります。
ですが、//を外し、fflush(stdin)を機能させると
①文字を入力:a
①入力された文字は:a
②文字を入力:b
②入力された文字は:b
③文字を入力:c
③入力された文字は:c
④文字を入力:d
④入力された文字は:d
となりました。
①、fflush(stdin)について調べていましたが、バッファに格納されているデータを吐き出すとかいてありました。
この意味がよく理解できません。もう少しわかりやすく教えていただけないでしょうか。
②、fflush(stdin)をコメントにした場合、なぜ2回めと4回めscanfが機能しなかったのでしょうか。そしてなぜ3回めのscanfが機能したのでしょうか。