我刚看到这个:
#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()
,但都没有。
答案 0 :(得分:0)
这段代码效果很好。我认为,在第二次扫描之后,其他字符需要额外空间(比如换行符)
第二次扫描应该是这样的 - &gt;&gt; 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;
}
答案 1 :(得分:0)
我正在使用Ubuntu 16.04。
首先,添加stdio_ext.h
以使用__fpurge()
;
在每scanf()
之前,执行_fpurge(stdin)
。
它对我来说很好。
您对{strong> 使用__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;
}