| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 954 人关注过本帖
标题:求助,菜鸟级问题!
只看楼主 加入收藏
现龙
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2010-3-28
结帖率:80%
收藏
 问题点数:0 回复次数:14 
求助,菜鸟级问题!
为什么这个程序只能输入5个字母,我想输进10个字母的!请大家请教以下!!谢谢

char a[10];
int i;
for(i=0;i<10;i++)
scanf("%c",&a[i]);

[ 本帖最后由 现龙 于 2010-4-3 19:20 编辑 ]
搜索更多相关主题的帖子: 字母 
2010-04-03 19:01
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
Enter键代表2个字符 \r\n 回车+换行
当scanf 遇到第一个字符 默认结束 但确把第二个字符赋给了 下一个数组变量
所以你需要再其后面 加个getchar()将\n接收走
2010-04-03 19:07
现龙
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2010-3-28
收藏
得分:0 
但是把char a[10]换成int [10]  ,就可以输入10个数字了,这是为什么呢?
2010-04-03 19:10
ggvvcc
Rank: 3Rank: 3
来 自:山东临沂
等 级:论坛游侠
帖 子:50
专家分:119
注 册:2010-4-3
收藏
得分:0 
首先,你的输入语句有问题,应该是scanf("%c", &a[i]);或scanf("%c", a + i);
其次,你并不是只能输入5个数,我猜你是这样输入的“a b c d e f g h i j”,而scanf函数并不把空格作为间隔符,而是作为字符接收,所以你得到的十个数中有5个是空格,而空格是看不到的。如果你的输入是“abcdefghij”,那么你想要的结果就会显示出来了,如下:
    char a[10];
    int i;
    for(i = 0; i<10; i++)
        scanf("%c", &a[i]);
   
    for(i = 0; i < 10; i++)
        printf("%c ", a[i]);
    printf("\n");
    return 0;

[ 本帖最后由 ggvvcc 于 2010-4-3 19:16 编辑 ]
2010-04-03 19:13
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
因为 因为 \n是字符啊 字符啊
2010-04-03 19:13
流云追风
Rank: 2
等 级:论坛游民
帖 子:15
专家分:16
注 册:2010-4-1
收藏
得分:0 
回复 4楼 ggvvcc
这位说的有理
2010-04-03 19:20
Lyy_Taurus
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2010-3-30
收藏
得分:0 
新收获
2010-04-03 19:32
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:0 
个人的一点看法,希望讨论一下
首先:你用char 时\n被当做一个字符接受,scanf输入不会以空格作为输入终止,但是会读到空格为止,你可以把数组printf一下看看,这也是调试程序经常用的。
其次:你用 int时,scanf应该不会去接受字符\n,而是去寻找数字,所以你可以输入十个。
有不对的地方,请指出来,大家来学习
2010-04-03 22:37
现龙
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2010-3-28
收藏
得分:0 
回复 8楼 韩明海
我觉得应该是关于指针的事吧,我是这样输入的,先按一个字母在按回车!应该象二楼说的!
char a[10]是一个字节,所以把\n也付给了下一个数组变量,int [10]是两个字节所以能输进十个数字吧!可能我理解有点问题,请多多指教!!
2010-04-04 14:37
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:0 
回复 9楼 现龙
对于char型,我说的就是那个意思,但是对于int型的,int **[0]里只能存放一个数,不可能一个字节存一个数,下一个字节存\n的,呵呵,如果你输入的数小,只能是高字节为全零,底字节为你输入的数,这种问题很好解决的,只要一个printf看看结果就解决了,试试吧!不对的话,记得把你的操作过程和结果告诉我哦,一起进步
2010-04-04 20:31
快速回复:求助,菜鸟级问题!
数据加载中...
 
   



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

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