啊哈磊_编程从这里起步

标题: 这个程序是用来计算输入的字母个数,可是为什么计算不正确? [打印本页]

作者: 忆中寻思    时间: 2014-4-16 00:04
标题: 这个程序是用来计算输入的字母个数,可是为什么计算不正确?
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAXELS 81
int main()
{
        int countlets(char []);
    char string[MAXELS];
    printf("Enter 80 letters\n");
    gets(string);
    countlets(string);
    printf("There are %d letters\n",countlets(string));
        system("pause");
        return 0;
}
int countlets(char s[MAXELS])
{
        int i,k=0;
    for(i=0;i<MAXELS-1;i++)
    {
                if(isalpha(s[i]))
                k++;
    }
    return  (k);

}



作者: rosynirvana    时间: 2014-4-16 00:04
for(i=0;i<MAXELS-1;i++)
试试
for(i=0; i<MAXELS-1 && s[i]; i++)
作者: 18320012584    时间: 2014-4-16 13:05
这个太复杂了,你是专业的???
作者: 忆中寻思    时间: 2014-4-16 15:27
18320012584 发表于 2014-4-16 13:05
这个太复杂了,你是专业的???

是课堂的作业!
作者: 忆中寻思    时间: 2014-4-16 15:28
rosynirvana 发表于 2014-4-16 00:04
for(i=0;i

嗯,可以了,不过为什么会这样?
作者: rosynirvana    时间: 2014-4-16 15:36
忆中寻思 发表于 2014-4-16 15:28
嗯,可以了,不过为什么会这样?

string没有初始化

假设输入的字符串是Hello
那么string的情况就是

H e l l o \0 ? ? ? ? ? ? ……
注意?表示一个随机值

如果越过\0这里,就会把后面的随机值统计进去,如果后面有字母,那就会让统计结果变大
作者: 忆中寻思    时间: 2014-4-16 15:55
明白了,谢谢你!




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2