请教C语言高手一个问题~~

当运行以下程序时,从键盘输入:aabb<回车>ccdd<回车>则下面程序运行结果是:#include<stdio.h>main(){chara1[5],a2[5],a3[... 当运行以下程序时,从键盘输入:
aa bb<回车>
cc dd<回车> 则下面程序运行结果是:
#include<stdio.h>
main()
{ char a1[5],a2[5],a3[5],a4[5];
scanf("%s%s",a1,a2);
gets(a3);gets(a4);
puts(a1);puts(a2);
puts(a3);puts(a4);
}
答案是 aa
bb
cc dd 为什么?
展开
 我来答
cjj796
2013-09-28 · TA获得超过8710个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:4107万
展开全部

scanf 函数,要加入地址符号&,scanf 在读取字符串的时候;

会把空格作为结束符,所以就出现了下面的情况:

aa
bb

而scanf 函数结束的时候,会向下传递一个回车符,这个回车符,就被 gets(a3); 接收到了,

所以第三行是空行,没有内容;

第四行显示的 cc dd 其实是 gets(a4) 内的值。

更多追问追答
追问
那gets的用法您能给我解释下吗
和scanf区别
小D彬
2013-09-28
知道答主
回答量:22
采纳率:0%
帮助的人:4.2万
展开全部
scanf函数遇到空格和回车就结束!所以a1接收的是aa,a2接收的是bb;而gets以回车为结束符,可以接收空格键;所以第一行的回车被a3作为结束符,a4接收的是cc dd ;a3其实是空的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
知了linux
2013-09-28
知道答主
回答量:10
采纳率:0%
帮助的人:8.5万
展开全部
scanf遇到空格、换行、等字符时,认为输入结束。
gets只有遇到换行时才认为输入结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Lotayou
2013-09-28 · TA获得超过382个赞
知道小有建树答主
回答量:347
采纳率:0%
帮助的人:116万
展开全部
赋值后a1 = "aa", a2 = "bb", a3 = "cc dd", a4 = "\0"(就是那个回车)
最后光标停在第5行
追问
为什么aa bb分开了
追答
你给的程序不对……在我的机器上运行直接崩溃了……最好不要把scanf和gets混着用,尤其是读入字符串的时候;这样很容易因为空格和回车键被直接读入变量而产生错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帅不是我的错94
2013-09-28
知道答主
回答量:18
采纳率:0%
帮助的人:2.7万
展开全部
aaaaaaaa啊啊啊啊啊啊啊啊啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式