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

Code1:#include<stdio.h>intmain(){chara[50]={0};intl,h;printf("输入长和高:");scanf("%d%d",&... 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
展开
 我来答
bhtzu
2014-08-11 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4126万
展开全部
#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;
}
追答
这是不同编译器下的函数和用法不同。
平安不是妖3914
2014-08-11 · TA获得超过840个赞
知道小有建树答主
回答量:631
采纳率:0%
帮助的人:415万
展开全部
在程序中scanf和gets不能混合使用,如果一个程序中用scanf的话,一般不能再用gets,反之亦然,具体看下这个http://zhych16.blog.163.com/blog/static/118299049200992635217798/ 望采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式