我如何在这个 while 循环中得到这个 getchar() 函数到 return 一个值? (C)

How do I get this getchar() function inside this while loop to return a value? (C)

所以我不熟悉 C 中的 getchar() 函数(因为我是编程新手)。
我想知道如何使下面的代码获取多个字符(无论是通过文件还是通过键盘输入)并使用具有 getchar() 函数的 while 循环对它们进行计数。
我希望它一直读到文件末尾(或键盘输入)。 截至目前,代码没有 return 任何内容(即使您在命令行中键入)。
OS 我是 运行 此代码来自 Windows。

#include <stdio.h>

int main(void){
    
    int blanks = 0, digits = 0, letters = 0, others = 0;
    int c; //use for actual integer value of character
    printf("WELCOME TO WHILE CHARACTER COUNTER: WRITE ANY CHARACTER:\n");
    
    while ((c = getchar()) != EOF){
        if (c == ' ') //counts any blanks on a text
            ++blanks;
        else if (c >= '0' && c <= '9')
            ++digits;
        else if (c >= 'a' && c <= 'z' || c >= 'A' &&  c<= 'Z') 
            ++ letters; 
        else
            ++ others;
}
printf ("\nNumber of:blank characters = %d, digits = %d, letters = %d", blanks, digits, letters);

printf ("\nOther characters = %d", others);

return 0; 
}

原则上,您的代码有效。对于输入 This is a test. 后跟换行符,然后是 end-of-file,您的程序具有以下输出:

WELCOME TO WHILE CHARACTER COUNTER: WRITE ANY CHARACTER:

Number of:blank characters = 3, digits = 0, letters = 11
Other characters = 2

单击 this link 以使用该输入自行测试您的程序。

我怀疑你的问题是以下之一:

  • 您不知道如何以从文件重定向输入的方式执行您的程序。

  • 你不知道如何在键盘上输入end-of-file。

为了以从文件重定向输入的方式调用您的程序,在大多数操作系统上,您可以按以下方式调用您的程序:

myprogramname < inputfile.txt

当您从 terminal/console 读取输入时,您可以按以下方式输入 end-of-file:

  • 在 Linux 上,您可以使用键盘组合 CTRL+D.
  • 在 Microsoft Windows 上,您可以使用键盘组合 CTRL+Z.