| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 409 人关注过本帖
标题:两个字符数组的问题!希望高手解答下!
只看楼主 加入收藏
diouf3
Rank: 1
等 级:新手上路
帖 子:17
专家分:5
注 册:2010-5-8
结帖率:88.89%
收藏
已结贴  问题点数:10 回复次数:3 
两个字符数组的问题!希望高手解答下!
小弟在练习时发现点问题,希望高手解答下!
第一个:
从键盘输入:
aa bb<回车>      //aa bb之间有空格
cc dd<回车>      //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

我不是很明白结果为什么是这样。
我觉得a4里面应该没有值才对,也就是输入完上面的是不会出现结果的,还应该在输入一个字符串!

第二题:

从键盘输入:
ab<回车>
c<回车>
def<回车>

#include<stdio.h>
#define N 6
main()
{ char c[N];
  int i=0;
  for(;i<N;c[i]=getchar();i++);
  for(i=0;i<N;i++) putchar(c[i]);
}      
输出的结果是:
ab
c
d
不明白啊!高手解答下!  

            
搜索更多相关主题的帖子: 字符 解答 
2010-07-22 00:17
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:6 
第一题
scanf("%s%s",a1,a2);//读取aa给a1,跳过空格读取bb给a2
  gets(a3);gets(a4);//gets读取bb后的换行符给a3(实际上gets会将读取到的换行符舍弃,加上'\0',所以a3现在为空字符串,即“”),然后读取下一行给a4(同样舍弃了‘\n',添加了'\0';
  puts(a1);puts(a2);//注意puts会自动添加换行符就行
  puts(a3);puts(a4);

第二题:
还是换行符,要知道getchar会读取换行符的
所以c[] == {'a','b','\n','c','\n','d'};而putchar是不会添加换行符输出的
2010-07-22 00:37
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:4 
楼上正解,scanf函数在存数据的时候,自动忽略数据之前的空格与换行符,但是遇到数据之后的空格或者换行符就会结束输入。
gets函数不会,如果内存中留下了换行符,那么他就认为输入结束了,但是他可以读入数据之间的空格符。
2010-07-22 08:54
tomywj
Rank: 2
等 级:论坛游民
帖 子:27
专家分:20
注 册:2010-7-20
收藏
得分:0 
学习了!
2010-07-22 09:18
快速回复:两个字符数组的问题!希望高手解答下!
数据加载中...
 
   



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

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