C代码计算一个单词中有多少个字母

标签 c string function loops

我编写了简单的代码来计算一个单词中有多少个字母,由于某种原因变量letters不一致,这里是代码

#include <stdio.h>

int main()
{
    char str;
    int slen(char *str)
    {
        int i;
        int letters=0;
        for(i=0;i<30;i++)
        {
            if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z'))
                letters++;
        }
        return letters;
    }
    printf("%d \n", slen("Word"));
}

这里的变量letter打印22。

最佳答案

因为< 30您的状况for循环,你的程序会越过"Word"字符串边界并开始计算该字符串之后内存中的所有内容。

替换< 30< strlen(str) (您将需要#include <string.h>)。

更新:(感谢@J...S(参见评论))或者您可以重写

for (i=0; i < 30; i++)
{
    if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z'))
        letters++;
}

while (str != '\0') {
    if ((*str >= 'A' && *str <= 'Z') || (*str >= 'a' && *str <= 'z')) {
        letters++;
    }
    ++str;
}

您还可以使用类似 isalpha() 的内容而不是你的if情况。

顺便说一句,使用空格来分隔一行的不同部分。不然真的很难读懂。谢谢:)

关于C代码计算一个单词中有多少个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46767030/

相关文章:

c - 如何使用标记合并##运算符合并数组元素???

c++ - CUDA:--ptxas-options=-v 共享内存和 cudaFuncAttributes.sharedSizeBytes 不匹配

c - scanf和format有关吗?

c - ASCII 字符未打印出来

string - 如何在 autohotkey 中将字符串转换为数字?

C++:调用模板类的非模板函数

javascript - 复选框取消点击事件Javascript

c - 正则表达式匹配行(换行符除外)(FLEX、BISON)

python - 在 python 3 中将字节转换为字符串

c++:在另一个类的函数中返回对象