【发布时间】:2017-05-17 19:31:39
【问题描述】:
我是 C 的初学者。我正在尝试打印用户输入的字符串中的长度和单词数。我在处理单词计数方面遇到了麻烦。我尝试扫描空格字符 的编号,然后将结果加1。保证每个单词只用一个空格隔开。
我执行了代码,并输入了
I go to school by bus.
第二个输出不是我预期的
22
24
22 是正确的,因为它确实是字符串的长度,但我不明白为什么它打印 24 而不是 6(5 个空格加 1 的结果)。
代码如下
#include<stdio.h>
#include<string.h>
int main(){
char in[256];
int cl=0,cw,i;
scanf("%[^\n]",&in);
cw=strlen(in);
for(i=0;i<=cw;i++){
if(in[i]=' '){
cl=cl+1;
}
}
printf("%d\n",cw);
printf("%d\n",cl+1);
return 0;
}
出了什么问题,我怎样才能得到正确的输出?
【问题讨论】:
-
@xing 为什么这里是必需的?这是一个很好的做法,但不是这里的错误原因。 :)
-
这个问题是由无法再复制的问题或简单的印刷错误引起的。虽然类似的问题可能是这里的主题,但这个问题的解决方式不太可能帮助未来的读者。这通常可以通过在发布之前确定并仔细检查重现问题所需的最短程序来避免。
-
@xing
cl已经初始化为 0,cw被strlen初始化,i被for (i = 0;...)初始化。 -
我在剪贴板中粘贴了一个过时的代码,其中
cl尚未初始化。我的错。