【发布时间】:2014-09-09 13:47:30
【问题描述】:
所以,我们在课堂上得到了这个程序。 “用C编写一个程序来计算用户输入的句子中的单词数。” 这是我能想到的,但单词的数量总是比正确的数字少一。我的老师告诉每个人在打印之前将字数加 1。我认为它有一个错误,如果我们不输入任何单词,即按Enter而不是打字,我老师建议的程序仍然会将字数计算为1而不是0。你知道有什么方法可以得到正确的单词计数而不只是在最后加 1? 代码:
我的代码(比正确的少 1):
#include <stdio.h>
#include <string.h>
void main()
{
char s[200];
int count = 0, i;
printf("enter the string\n");
gets(s);
for (i = 0;i<strlen(s);i++)
{
if (s[i] == ' ')
count++;
}
printf("number of words in given string are: %d\n", count);
}
【问题讨论】:
-
如果用户输入两个相邻的空格怎么办?
one two -
请编译所有警告和调试信息 (
gcc -Wall -g)。另外,不要使用gets,而是使用fgets。最后学习现在如何使用调试器 -
不要使用
gets(),而是fgets,你也可以使用\n作为单词分隔符。 -
阅读isalpha(3) 等... 将
Hello, I am ... John-F Kennedy!视为输入。 -
@BasileStarynkevitch:当然,但他自己尝试一下是个好主意。这个问题充满了怪癖,可以教会他很多东西。使用函数不是一个好主意。