【发布时间】:2015-01-13 12:49:09
【问题描述】:
我有这个简单的代码来接受 3 个字符,:
char a,b,c;
scanf("%c",&a);
scanf("%c",&b);
scanf("%c",&c);
printf("%c",a);
printf("%c",b);
printf("%c",c);
我理解为什么它只接受 2 个字符,因为第二个 scanf 接受回车。但是,如果在每个 scanf 之间使用 __fpurge(stdin);,则代码按预期工作。但是如果我使用read(STDIN_FILENO,&a,1); 而不是scanf,它就不起作用。对于read(),只有tcflush(STDIN_FILENO,TCIOFLUSH); 有效,但scanf 失败。谁能解释一下为什么?
【问题讨论】:
-
你确定你打电话给
__fpurge(STDIN_FILENO);还是__fpurge(stdin);?
标签: c linux linux-device-driver