获取字符的方法:

字符串scanf("%s” ,&arr[0])  ——需要创建大buffer
字符scanf("%c", &ch) ——不需要创建大buffer


#include <stdio.h>

#if 0
int main(void)
{
    char buffer[501] = {'\0'};//存放字符串
    int count[128] = {0};//把字符串对应的ascii码作为下标
    char result = 0;//计算不同字符个数
    scanf("%s", &buffer);
    for(int i = 0; i<strlen(buffer); i++)
    {
        if(buffer[i]>=0&&buffer[i]<=127)
            count[buffer[i]]++;
    }
    for(int i = 0; i<128; i++)
    {
        if(count[i]!=0)
            result++;
    }
    printf("%d", result);

    return 0;
}
#endif
int main(void)
{
    int count[128] = {0};//把字符串对应的ascii码作为下标
    char result = 0;//计算不同字符个数

    //输入不定长的字符串: 单个字符处理,不用创建大的RAM buffer
    char ch = 0;
    while(EOF != scanf("%c", &ch))
    {
        if(ch == '\n')
            break;
        if(ch>=0&&ch<=127)
            if(count[ch] == 0)
            {
                count[ch]++; 
                result++;
            }
    }
    printf("%d", result);

    return 0;
}