我在互联网上找到了这个功能,我发现它非常有用 但我是编程新手,有人可以简要解释一下它究竟做了什么
#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;
}
答案 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而不是真和假的原因