我刚刚遇到了这一点:
#include <stdio. h>
int main()
{
char fname,sname;
printf("your first name?: ");
flushall();
scanf("%c", &fname);
printf("your last name?: ");
scanf("%c", &sname);
printf("initials: %c. %c",fname,sname);
return 0;
}
问题是我得到了printf语句,m无法输入任何内容。
它只是跳过输入部分...
P.S。:我正在使用Ubuntu 15.10并使用了fflush(stdin)
和fpurge()
,但它们都没有起作用。
我正在使用ubuntu 16.04。
首先,包括 stdio_ext.h
以使用 __fpurge()
;
在每个scanf()
之前,请执行_fpurge(stdin)
。
它对我来说很好。
您在> 如何使用__fpurge()
上没有提供任何信息。这就是为什么我给您答案,告诉您再次尝试__fpurge()
的原因。x)
#include <stdio.h>
#include <stdio_ext.h>
int main()
{
char fname,sname;
printf("your first name?: ");
__fpurge(stdin);
scanf("%c", &fname);
printf("your last name?: ");
__fpurge(stdin);
scanf("%c", &sname);
printf("initials: %c. %c",fname,sname);
return 0;
}
此代码效果很好。第二扫描应该像这样 - >> scanf(" %c",&sname)
和flushall
我认为
#include <stdio.h>
int main()
{
char fname,sname;
printf("your first name?: ");
scanf("%c", &fname);
printf("your last name?: ");
scanf(" %c", &sname);
printf("initials: %c. %c",fname,sname);
return 0;
}