У меня есть этот простой код, чтобы принять 3-х символов ,:Почему tcflush не работает для scanf?
char a,b,c;
scanf("%c",&a);
scanf("%c",&b);
scanf("%c",&c);
printf("%c",a);
printf("%c",b);
printf("%c",c);
Я понимаю, почему это будет принимать только 2 символа, потому что второй зсапЕ принимает возврат каретки. Однако, если при использовании __fpurge(stdin);
между каждым сканированием код работает, как ожидалось. Но если я использую read(STDIN_FILENO,&a,1);
вместо scanf, это не сработает. Для read()
работает только tcflush(STDIN_FILENO,TCIOFLUSH);
, но он не работает с scanf. Может кто-нибудь объяснить мне, почему?
Вы уверены, что вызвали '__fpurge (STDIN_FILENO);' или это было '__fpurge (stdin);'? –