ubuntu中C语言中的单个字符输入



我刚刚遇到了这一点:

#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;
} 

最新更新