c程序新手 想问问这个问题怎么写?

图片说明

int a[256];
char s[65536];
scanf("%s",s);
int i=0;
while(s[i]) a[s[i]]=1;
int count=0;
for(i=0;i<256;i++) count+=a[i];
printf("%d\n",count);

大概是这样写的,好久没有写c了,不知道语法上有没有问题

#include<stdio.h>

int main()
{
    int num = 0;
    char ch;
    while ((ch = getchar()) != '\n')
    {
        if (ch <= 'z' && ch >= 'a' || ch <= 'Z' && ch >= 'A')
        {
            num++;
        } else if (ch <= '9' && ch >= '0')
        {
            num++;
        } else if (ch == ' ')
        {
            num++;
        } else
        {
            num++;
        }
    }
    printf("%d\n", num);
}

 #include <stdio.h>
 #include <string.h>

 int main()
 {
     char str[1024];
     char temp[1024];
     char c;
     int i,j,num;
     int k = 0;

     printf("请输入一个字符串:");
     scanf("%[^\n]",str);  //这里可以检验空格
     num = 1;
     i = 1;
     j = strlen(str);
     temp[0] = str[0];
     temp[1] = '\0';

     for(i;i < j;i++)
     {
        c = str[i];
        num += 1;
        for(k;k < i;k++)
        {
            if(c == temp[k])
            {
                num -= 1;
                break;
            }
        }
        temp[i] = c;
        temp[i+1] = '\0';
        k = 0;
     }
     printf("\n不重复的字符个数为:%d\n",num);

     return 0;
}

讲下思路吧,先输入到数组中,计算长度初始为1,然后从第二个字符开始,输入字符串中在此字符前面的所有字符都与之比较数值,如果没有相同的,则计算长度加1。