【C语言】gets和puts还有scanf和printf搭配使用

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

#include<stdio.h>

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

追答

这是不同编译器下的函数和用法不同。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-11
在程序中scanf和gets不能混合使用,如果一个程序中用scanf的话,一般不能再用gets,反之亦然,具体看下这个 望采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网