简单C If语句

简单C If语句,c,C,我制作了一个非常简单的C程序,用来计算字符串中有多少个字符和单词(我通过检查文本中有多少空格和一个空格来计算单词)。当前代码如下(没有“printf”以缩短代码): 我的问题是数词不起作用。我得到了一个准确的字符数,但文字总是给我2293576个,我无法解释为什么 有人能帮我解开这个谜吗 谢谢你的回答;我真的很感谢你的帮助 如果我的原始技能让你的头受伤了,我也很抱歉。我是一名初学者,但希望能快速提高。您还没有初始化单词。C中未初始化的局部变量默认为未定义的值,并且不会自动初始化为零 声明 int

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

我的问题是数词不起作用。我得到了一个准确的字符数,但文字总是给我2293576个,我无法解释为什么

有人能帮我解开这个谜吗

谢谢你的回答;我真的很感谢你的帮助


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

您还没有初始化
单词。C中未初始化的局部变量默认为未定义的值,并且不会自动初始化为零

声明

int x, y = 0;
不一样

int x = 0, y = 0;

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

characters = ++characters;
只是:

characters++;
(对于
单词也是如此)

另外,什么是
'\d'
字符(除了一个普通的旧d)?

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

int words, characters = 0;
字符
被指定为0,但
单词
未被初始化,因此它可以包含任何整数值。然后,代码的其余部分在未初始化状态下修改
单词。而不是从0开始向上计数,
单词
是从类似2293576的数字开始,然后从那里开始向上计数。要修复代码,请在for循环中使用
字符之前,将
单词
指定为0以及
字符

int words = 0, characters = 0;

我喜欢C怎么从不这样做。。。很多其他语言都是这样。我已经学会欣赏C语言能做到这一点。。。有时喜欢简洁的代码而不是对程序员友好的代码。提醒你,这是后天养成的品味。该死,这么简单。。。非常感谢@BobKaufman怎么会这样?我看不出拥有它有多实际。所以这只是一种方便。@sinni800:这很好,因为如果你不需要它,它就无法完成。例如,假设要将变量传递给函数以进行初始化。在调用函数之前初始化变量只是浪费时间。现代语言正从这种方法转向更简单的方法。但是C一直都是关于效率的。
i=++i
会伤我的脑筋。我建议学习如何使用调试器。当您通过初始化并注意到
words
不是
0
时,可能会立即发现问题!他们的意思是说,
++单词
就足够了。+1(抵消)不理解反对票。虽然OP可能无法证明多年来对C语言的熟练程度,但这个问题代表了他为克服所遇到的障碍所做的最大努力。
int words = 0, characters = 0;