Code 1:
#include<stdio.h>
int main()
{
char a[50]={0};
int l, h;
printf("输入长和高:");
scanf("%d%d", &l, &h);
printf("输入字符串a=");
gets(a);
puts(a);
return 0;
}
Code 2:
#include<stdio.h>
int main(void)
{
char a[50]={0};
printf("输入字符串a=");
gets(a);
puts(a);
return 0;
}
为什么第二段代码就能正确输入输出字符串,第一段就不行。。编译器是GCC 4.7.1 。release
int main()
{
char a[50]={0};
int l, h;
printf("输入长和高:");
scanf("%d%d", &l, &h);
printf("输入字符串a=");
flushall();//清空缓冲区
gets(a);
puts(a);
return 0;
}
这样就可以了。
非格式化输入,字符和字符串的输入会受到前次输入缓冲区的影响,因此在gets、getchar等接收字符输入前,应该清空缓冲区。
追问 //思路是对的呢,换个函数就能用了,谢谢您
Code Final:
printf("输入字符串a=");
//flushall();//清空缓冲区
fflush(stdin);//换成这个
gets(a);
puts(a);
return 0;
}
这是不同编译器下的函数和用法不同。