一个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.