我不明白这个代码是不工作,C问题

hi3rlvi2  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(124)

这就是密码我以为会成功。它应该让我输入input,然后告诉我空格,数字,字母和其他的数量。但它只是提供输入,而不是给我输出。

#include <stdio.h>

int main(void)
{
    int blanks = 0, digits = 0, letters = 0, others = 0;
    char c;

    printf("Im working");

    while ((c = scanf("%c", &c)) != EOF)
    {
        if (c == ' ')
            ++blanks;
        else if (c >= '0' && c <= '9')
            ++digits;
        else if (c >= 'a' && c <= 'z')
            ++letters;  
        else if (c >= 'A' && c <= 'Z')
            ++letters;
        else
            ++others;
    };

    printf("blanks = %d, digits = %d, letters = %d, others = %d\n\n",
           blanks, digits, letters, others);
    return 0;      
}

字符串

juud5qan

juud5qan1#

代码将读取标准输入,直到文件结束。为了从终端发出文件结束的信号,您应该键入Ctrl-D(在UNIX系统上)或Ctrl-Z(在Windows上)并按Enter键。
但是请注意,您在测试while ((c = scanf("%c", &c)) != EOF)中覆盖了c,因此字符分类测试将只增加others。你应该只测试返回值:

while (scanf("%c", &c) != EOF)

字符串
或者,您可以将c定义为int并写入:

while ((c = getchar(c)) != EOF)

相关问题