有关输入字符统计各类个数的问题

#include
#include
int main()
{
int capitalletter=0,lowercaser=0,blank=0,digit=0,other=0,x;
char str[10];
printf("Input 10 characters: ");
scanf("%s",&str);
for (x=0;x {
if (str[x]>='A'&str[x]<= 'Z')
capitalletter++;
else if (str[x]>='a'&str[x]<='z')
lowercaser++;
else if (str[x]>='0'&str[x]<='9')
digit++;
else if (str[x]=='032')
blank++;
else
other++;
}
printf("capital letter=%d,lower caser=%d,blank=%d,digit=%d,other=%d\n",capitalletter,lowercaser,blank,digit,other);
return 0;

}

为什么只要输入的数组里面有空格,就会把空格及其以后的字符都当成other输出。
如果输入的字符里没有空格,那么就都正确

scanf是接受不到空格的,你可以用gets(str) 读取一行字符
你那可能要把gets_s改成gets

 #include <stdio.h>
#include<string.h>
int main()
{
    int capitalletter = 0, lowercaser = 0, blank = 0, digit = 0, other = 0, x;
    char str[30];
    printf("Input 10 characters: ");
    gets_s(str);
    for (x = 0;x<strlen(str); x++){
    if (str[x] >= 'A'&str[x] <= 'Z')
        capitalletter++;
    else if (str[x] >= 'a'&str[x] <= 'z')
        lowercaser++;
    else if (str[x] >= '0'&str[x] <= '9')
        digit++;
    else if (str[x] == ' ')
        blank++;
    else
        other++;
    }
    printf("capital letter=%d,lower caser=%d,blank=%d,digit=%d,other=%d\n", capitalletter, lowercaser, blank, digit, other);
    return 0;
}

图片说明

图片说明