示例:
输入一串字符“anhhAkjJ”
得到的结果应该是:“7”
方法一:
利用ascll码0-127,定义一个128大小的字符串
#include <stdio.h>
#define M 100
#define N 128
int cal_count_str(char *pstr,int *COUNT)
{
//入参检查
if(NULL == pstr || NULL == COUNT)
{
printf("NULL_ERROR!\n");
return -1;
}
//先定义一个可以存放128个字符的数组出来
int CmpArr[N] = {0};
//遍历pstr这个字符串,判断出现的次数
while(*pstr)
{
if(0 == CmpArr[*pstr])
{
CmpArr[*pstr] = 1;
//计算个数
//(*COUNT)++;
}
//让pstr滚动起来
pstr++;
}
//遍历CmpArr这个数组,查找1的个数即可
int i;
for(i=0;i<N;i++)
{
if(1 == CmpArr[i])
{
(*COUNT)++;
}
}
return 0;
}
int main(int argc, const char *argv[])
{
//利用字函数实现求一个字符串中出现的不同字符的个数
char str[M] = {'\0'};
char *pStr = str;
gets(pStr);
//定义一个用来存放个数的变量
int count = 0;
int ret = cal_count_str(pStr,&count);
if(-1 == ret)
{
return -1;
}
printf("该字符串中不同的字符个数为: %d个\n",count);
return 0;
}
方法二:
#include<stdio.h>
#define N 30
int different(char*s)
{
int i,j,k=1,l=1;
char m[N]={0};
m[0]=s[0];
for(i=1;s[i]!='\0';i++)
{
l=1;
for(j=0;m[j]!='\0';j++)
{
if(m[j]==s[i])
{
l=0;
break;
}
}
if(l==1)
{
m[j]=s[i];
k++;
}
}
return k;
}
int main(int argc, const char *argv[])
{
char str[N]={0};
printf("请输入你所要统计的字符串:\n");
gets(str);
int G = different(str);
printf("字符串%s中不同的字符数为%d个\n",str,G);
return 0;
}