用于计算字符串中有多少个不同字符的函数

时间:2015-01-20 18:58:05

标签: c char

我在互联网上找到了这个功能,我发现它非常有用 但我是编程新手,有人可以简要解释一下它究竟做了什么

 #include <stdio.h>

  int diffcount(char* s)
    {
        unsigned char seen[127];
        int cnt=0,i;
        for(i=0;i<127;i++)
            seen[i]=0;
        for(i=0;s[i];i++)
        {
            if(!seen[(int)s[i]])
            {
                cnt++;
                seen[(int)s[i]]=1;
            }
        }return cnt;
    }

int main(void) {
    char string[20];
    scanf("%s",string);
    printf("Razlicitih znakova: %d\n", diffcount(string));

    return 0;
}

1 个答案:

答案 0 :(得分:2)

首先,我们初始化一个空的数组int seen[127]; &#34; 看到&#34;数组用于查明数组s中是否符合代码i的字符:if seen[i]==1而不是字符(char)i中的s

之后我们通过char* s进行循环,并通过查看s[i]的值来检查是否已满足char seen[s[i]];,如果它为false,我们将{{1} (因为我们遇到了它)并增加了我们的计数器。 函数的结果是变量cnt的值

这也可能有所帮助: 每个char都有0到127之间的代码。例如,seen[s[i]]=true。 C中的bool与(int)'a' = 97相同,这就是我们有时使用0和1而不是真和假的原因