简单C如果声明

时间:2012-11-01 17:52:53

标签: c

我做了一个非常简单的C程序,它应该计算一个字符串中有多少个字符和单词(我通过检查文本中有多少个空格来计算单词)。当前代码如下(没有'printf'来缩短它):

int main(int argc, char *argv[])
{
    int character;
    int words, characters = 0;
    while ((character = getchar()) != '\n') {
        characters = ++characters;
        if ((character == ' ') || (character == '\d')) {
            words = ++words;
        } 
    } 
    return 0;
}

我的问题是计算单词不起作用。我得到了一个准确的字符数,但是单词总是给我2293576,我不能让世界弄明白为什么。

有人可以为我解开这个谜团吗?

感谢您的所有答案;我非常感谢你的帮助。

抱歉,如果我的原始技能让你的头脑受伤了。我是初学者,但希望快速提高。

3 个答案:

答案 0 :(得分:6)

您尚未初始化words。 C中未初始化的局部变量默认为未定义的值,并且不会自动初始化为零。

声明

int x, y = 0;

不一样
int x = 0, y = 0;

答案 1 :(得分:3)

您不会将单词初始化为0.另外,请更改此项:

characters = ++characters;

只是:

characters++;

(也适用于words)。

此外,'\d'字符(除了普通的旧d之外)是什么?

答案 2 :(得分:2)

您无法初始化“字词”。在声明中:

int words, characters = 0;

characters被指定为0,但words保持未初始化,因此它可以包含任何整数值。然后,其余代码会在其未初始化状态下修改wordswords不是从0开始计算,而是从2293576开始,从那里算起来。要修复代码,请先将words分配为0以及characters,然后才能在for循环中使用它们。

int words = 0, characters = 0;