| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1171 人关注过本帖
标题:一个C语言的小问题,解决不了
取消只看楼主 加入收藏
shutyourhead
Rank: 1
等 级:新手上路
帖 子:52
专家分:2
注 册:2010-8-22
收藏
 问题点数:0 回复次数:4 
一个C语言的小问题,解决不了
程序本意是想把字符串中a,b,c,d,e,其他的字符出现的次数分别储存在b[0]~b[5]中。
但是定义的字符数组为10,所有的次数却是11。我估计是统计时连字符串后面的'\0'也给算上了,每次b[5]都多一个。不知道怎么改。求大侠帮忙
#include<stdio.h>
#include<string.h>
void fun(char a[],int b[])
{
int i;
for(i=0;i<6;i++)
b[i]=0;
for(i=0;i<strlen(a);i++)
switch(a[i])
{
case 'a':b[0]++;break;
case 'b':b[1]++;break;
case 'c':b[2]++;break;
case 'd':b[3]++;break;
case 'e':b[4]++;break;
default:b[5]++;
}
 printf("have %d 'a'\n",b[0]);
 printf("have %d 'b'\n",b[1]);
 printf("have %d 'c'\n",b[2]);
 printf("have %d 'd'\n",b[3]);
 printf("have %d 'e'\n",b[4]);
 printf("have %d other\n",b[5]);
}
main()
{
char a[10];
int b[6];
gets(a);
printf("the original data:\n");
puts(a);
fun(a,b); }
问题补充:就算我输入10个字符aabbccddee,结果还是会have 1 other.
搜索更多相关主题的帖子: C语言 
2010-08-24 17:38
shutyourhead
Rank: 1
等 级:新手上路
帖 子:52
专家分:2
注 册:2010-8-22
收藏
得分:0 
回复 2楼 cnfarer
还是不太明白。
2010-08-24 18:12
shutyourhead
Rank: 1
等 级:新手上路
帖 子:52
专家分:2
注 册:2010-8-22
收藏
得分:0 
回复 4楼 erikyo
TC2.0
2010-08-24 18:12
shutyourhead
Rank: 1
等 级:新手上路
帖 子:52
专家分:2
注 册:2010-8-22
收藏
得分:0 
以下是引用cnfarer在2010-8-24 18:09:16的发言:

在default:b[5]++;后加一句printf("other is %d",a);看一下就知道了是什么字符了(是字符的编码)
other is 2.为什么会这样?代码为2的字符很怪
2010-08-24 18:15
shutyourhead
Rank: 1
等 级:新手上路
帖 子:52
专家分:2
注 册:2010-8-22
收藏
得分:0 
以下是引用jack10141在2010-8-24 18:16:50的发言:

明白了!你的字符数组a声明的太小!! 最好改为 a[81]
为什么,我就只进行10个字符的判定不行吗?
2010-08-24 18:22
快速回复:一个C语言的小问题,解决不了
数据加载中...
 
   



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

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