-2

我正在尝试构建一个简单的程序来计算用户输入中的字母数量。我的想法是使用一个for循环来循环字符串中的每个字母,增加一个计数器,并在最后返回最终的计数器总数。但是,我不希望程序计算空格 - 我试图使用该isalpha函数来执行此操作 - 但我似乎格式不正确。此外,我尝试使计数器不增加空格的方式是使用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);
}
4

2 回答 2

2

isalpha实际上是一个函数调用。(它是一个函数调用或类似函数的宏。)函数调用写为name()name(argument)name(argument,…)根据它是否传递零个、一个或多个参数。isalpha接受一个参数。该参数应该是一个unsigned char值。所以你可以称它为isalpha((unsigned char) s[i]). 您的if声明应如下所示:

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

您的程序还应该包含#include <ctype.h>声明isalpha.

于 2020-12-05T12:18:48.320 回答
0

这个记录

s[i] (isalpha)

是不正确的,没有意义。

您需要的是以下内容

size_t c = 0;

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

请注意,该函数是在您必须包含isalpha的标头中声明的。<ctype.h>

于 2020-12-05T12:21:02.463 回答