你知道,这不是一个家庭作业问题。我正在尝试通过自己编写更多程序来练习。所以,我必须编写一个计算字符串中单词数量的程序。我已经在我的程序中使用了空格数和句子中单词数之间的关系。 (单词的数量似乎比句子中的空格数多一个)。但是,当我尝试测试它时,编译器说字符串“Apple juice”只有1个字。 :(我不确定为什么我的代码可能出错。
这是我的代码:
int words_in_string(char str[])
{
int spaces = 0, num_words;
for (int i = 0; i != '\0'; i++)
{
if (str[i] == ' ')
{
spaces = spaces + 1;
}
}
num_words = spaces + 1;
return num_words;
}
答案 0 :(得分:6)
int words_in_string(char str[])
{
int spaces = 0, num_words;
for (int i = 0; str[i] != '\0'; i++)
{
if (str[i] == ' ')
{
spaces = spaces + 1;
}
}
num_words = spaces + 1;
return num_words;
}
停止条件应为
str[i] != '\0'
答案 1 :(得分:0)
你得到的代码是正确的,但假设单词数比空格数大1是一个错误的假设。您可以使用空格开头或以空格或两者结尾。在这种情况下,你的逻辑会失败。
答案 2 :(得分:0)
int words_in_string(const char *str){
int in_word = 0, num_words = 0;
while(*str){
if(isspace(*str++))
in_word = 0;
else{
if(in_word == 0) ++num_words;
in_word = 1;
}
}
return num_words;
}