试图制作一个计算字母但不计算空格的循环

Trying to make a loop which counts letters but not spaces

我正在尝试构建一个简单的程序来计算用户输入中的字母数。我的想法是使用 for 循环,它会循环字符串中的每个字母,增加一个计数器,最后 return 最终计数器总数。但是,我不希望程序计算 spaces - 我试图使用 isalpha 函数来执行此操作 - 但我似乎格式化不正确。此外,我试图使 space 的计数器不递增的方法是使用 c = c,但是,这似乎也是不正确的。这是我到目前为止编写的代码:

int c = 0;

int main(void)
{
    string s = get_string("Input:  ");
    printf("Output: ");
    for (int i = 0; i < strlen(s); i++)
    {
    if( s[i] (isalpha))
        {
        c++;
        }
    else
        {
        c = c;
        }
    }
    printf("%i\n", c);
}

isalpha 实际上是一个函数调用。 (它是一个函数调用或一个 function-like 宏。)一个函数调用被写成 name()name(argument)name(argument,…),这取决于它传递的是零、一、或更多论据。 isalpha 接受一个参数。该参数应该是一个 unsigned char 值。所以你可以称它为isalpha((unsigned char) s[i])。您的 if 语句应如下所示:

if (isalpha((unsigned char) s[i]))

您的程序还应包含 #include <ctype.h> 以包括声明 isalpha 的 header。

这条记录

s[i] (isalpha)

不正确,没有意义。

您需要的是以下内容

size_t c = 0;

for ( size_t i = 0; s[i] != '[=11=]'; i++ )
{
    if( isalpha( ( unsigned char )s[i] ) ) ++c;
}
printf("c = %zu\n", c );

注意函数isalpha声明在header<ctype.h>中,你必须包含