统计字符个数,哪里出问题了😶

include<stdio.h>
int e = 0, f = 0, c = 0, d = 0;
int main()
{
void number(char b[20]);
int i;
char a[20];
scanf("%s", a);
number(a);

return 0;

}
void number(char b[20])
{
int i;
for (i = 0; b[i]!='\0'; i++)
{
if (b[i]>='0'&&b[i]<='9')
e++;
else if ((b[i] >= 'a' && b[i] <='z' )||( b[i]>='A' && b[i] <='Z'))
f++;
else if (b[i]==' ')
c++;
else
d++;

}
printf("%d,%d,%d,%d", e, f, c, d);

}

scanf("%s", a);不能读取空格。遇到空格就读取结束
应该改成 gets(a);

你题目的解答代码如下:

#include <stdio.h>
int e = 0, f = 0, c = 0, d = 0;
int main()
{
    void number(char b[20]);
    int i;
    char a[20];
    //scanf("%s", a);
    gets(a);
    number(a);

    return 0;
}
void number(char b[20])
{
    int i;
    for (i = 0; b[i] != '\0'; i++)
    {
        if (b[i] >= '0' && b[i] <= '9')
            e++;
        else if ((b[i] >= 'a' && b[i] <= 'z') || (b[i] >= 'A' && b[i] <= 'Z'))
            f++;
        else if (b[i] == ' ')
            c++;
        else
            d++;
    }
    printf("%d,%d,%d,%d", e, f, c, d);
}

img

如有帮助,望采纳!谢谢!

scanf("%s", a);
改为
gets(a);
scanf("%s",a)遇到空格会结束输入的。