如果我输入的str1长度超过长度10,则其余部分将保留在缓冲区中并进入我的状态str2.如何清除缓冲区之前str2,我可以输入吗?
#include <stdio.h>
int main(void)
{
char str1[10];
char str2[10];
fgets(str1,10,stdin);
fgets(str2,10,stdin);
puts(str1);
puts(str2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
fgets(str1,10,stdin);做完之后
while((c = getchar()) != '\n' && c != EOF);
Run Code Online (Sandbox Code Playgroud)
这将在读取“str1”后清除输入缓冲区。
所以你的代码应该是
#include <stdio.h>
int main()
{
char str1[10];
char str2[10];
int c;
str1[0]=0;
str2[0]=0;
fgets(str1,10,stdin);
if( (str1[0]!=0) && (!strrchr(str1,'\n')) )
while((c = getchar()) != '\n' && c != EOF);
fgets(str2,10,stdin);
puts(str1);
puts(str2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)