【发布时间】:2017-10-16 09:29:23
【问题描述】:
我做了简单的代码来计算一个单词中有多少个字母,由于某种原因变量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。
【问题讨论】:
-
你期望什么输出?
-
你为什么在你的
for条件下做<30?这意味着循环将超出字符串本身的末尾并开始计算恰好在内存中的垃圾数据。 -
@STF 它被标记为 C,而不是 C++。
-
你知道
isalpha()吗? -
嵌套函数是 GNU 扩展,而不是标准 C。