我在运行以下代码时遇到一些问题。如果我向scanf
方法馈送数组a
提供了超过五个字符的输入,则其余字符将进入数组b
,并且我无法再次提供输入。我尝试使用fflush()
,但它没有帮助。发生了什么,我该如何解决?
#include<stdio.h>
int main()
{
char a[6];
char b[20];
printf("Enter any string :\n");
scanf("%5s",a);
printf("%s\n",a);
fflush(stdin);
scanf("%s",b);
printf("%s\n",b);
return 0;
}
答案 0 :(得分:2)
你永远不应该使用fflush(stdin)清除输入缓冲区,它的未定义行为,只有Microsoft-CRT支持这个。
#include<stdio.h>
int main()
{
int c;
char a[6];
char b[20];
printf("Enter any string :\n");
scanf("%5s",a);
printf("%s\n",a);
while( (c=getchar())!=EOF && c!='\n' );
scanf("%19s",b);
printf("%s\n",b);
return 0;
}