| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 457 人关注过本帖
标题:问问题来了
只看楼主 加入收藏
maomaostyle
Rank: 1
等 级:新手上路
帖 子:45
专家分:9
注 册:2009-5-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
问问题来了
程序代码:
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<回车>
运行结果:aa
          bb
 
          cc dd
 大虾能帮忙解释下吗????
搜索更多相关主题的帖子: 键盘 
2009-11-24 11:31
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:15 
a3是空
运行结果:aa           a1="aa"
          bb           a2="bb"
                       a3=""
          cc dd        a4="cc dd"
·
要正确获取,scanf函数后加入getchar()吃换行符,或加个'\n':scanf("%s%s\n",a1,a2);
如输入:
aa bb<回车>
cc dd<回车>
ee ff<回车>
显示:
aa
bb
cc dd
ee ff

努力—前进—变老—退休—入土
2009-11-24 11:49
菜豆王子
Rank: 2
等 级:论坛游民
帖 子:44
专家分:96
注 册:2009-11-22
收藏
得分:5 
gets()能够读取空格
而printr()不能
gets(a3)其实读的是换行符;所以输出时多了一空行
gets(a4)其实a4=="cc dd"如上楼说的那样!
2009-11-24 12:40
caojulians
Rank: 2
等 级:论坛游民
帖 子:39
专家分:67
注 册:2009-11-15
收藏
得分:0 
fflush(stdin)函数用来清除缓冲区多余数据。它比用getchar安全可靠。
2009-11-25 22:41
iqyuankong
Rank: 2
等 级:论坛游民
帖 子:68
专家分:10
注 册:2009-10-23
收藏
得分:0 
学习中
2009-11-25 22:45
caojulians
Rank: 2
等 级:论坛游民
帖 子:39
专家分:67
注 册:2009-11-15
收藏
得分:0 
再多解释一下:
  fflush()函数在stdio.h头文件中,是一个很少有人介绍的函数,原型为int fflush(FILE *),用来清除输入、输出流中的多余数据。stdin是标准输入流--即键盘输入。
楼上几位这样试试:运行程序后第一行输入数据aa  bb后再加些字符,如aa bb aaa bbb回车,。。。用一个getchar()是吃不掉的,用fflush就可以了。
2009-11-25 22:53
快速回复:问问题来了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015817 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved