1

我在运行以下代码时遇到了一些问题。scanf如果我向方法 feed array提供超过五个字符的输入a,则其余字符将进入 arrayb并且我不会再次提供输入。我尝试使用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;
}
4

1 回答 1

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;
}
于 2012-09-07T09:11:59.697 回答