我做了一个非常简单的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,我不能让世界弄明白为什么。
有人可以为我解开这个谜团吗?
感谢您的所有答案;我非常感谢你的帮助。
抱歉,如果我的原始技能让你的头脑受伤了。我是初学者,但希望快速提高。
答案 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
保持未初始化,因此它可以包含任何整数值。然后,其余代码会在其未初始化状态下修改words
。 words
不是从0开始计算,而是从2293576开始,从那里算起来。要修复代码,请先将words
分配为0以及characters
,然后才能在for循环中使用它们。
int words = 0, characters = 0;