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

A function to count how many different characters are in a string

我在网上找到了这个功能,我发现它非常有用 但我是编程新手,有人能简单解释一下它到底做了什么吗

 #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;
}

首先我们初始化一个空的零数组seen[127]; "seen"数组用于查找数组s中是否遇到了代码为i的字符:if seen[i]==1(char)i在字符串 s.

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

的值

这也可能有帮助: 每个字符的代码都在 0 到 127 之间。例如,(int)'a' = 97。 C 中的 bool 与 int 相同,这就是为什么我们有时使用 0 和 1 而不是 true 和 false