我编写了简单的代码来计算一个单词中有多少个字母,由于某种原因变量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/