#include<stdio.h>
int main()
{
int i=0, j, z[123]={0}, d;
char str[100];
printf("Input a string:\n");
gets(str);
for(i=0;i<100;i++)
{
if(str[i]>='a'&&str[i]<='z')
{
d=str[i];
z[d]++;
if(str[i]=='\n')
break;
}
}
for(j=97;j<123;j++)
{
if(z[j]!=0)
printf("number of '%c' is:%d\n",j,z[j]);
}
return 0;
}
你这里是个无脑循环,没有判断str[i]是0啊,如果是字符串结束符,就应该跳出循环了
无脑循环,那么字符串又没赋值
里面是随机分配的内存,存的什么就谁也说不清了
gets 读一行 换行属于第一行内 被读到了,,用scanf