首页 > 解决方案 > 试图制作一个计算字母但不计算空格的循环

问题描述

我正在尝试构建一个简单的程序来计算用户输入中的字母数量。我的想法是使用一个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);
}

标签: cincrementisalpha

解决方案


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.


推荐阅读