为什么我的程序不能用于计算字符串中的单词?

时间:2013-05-30 04:48:58

标签: c string

你知道,这不是一个家庭作业问题。我正在尝试通过自己编写更多程序来练习。所以,我必须编写一个计算字符串中单词数量的程序。我已经在我的程序中使用了空格数和句子中单词数之间的关系。 (单词的数量似乎比句子中的空格数多一个)。但是,当我尝试测试它时,编译器说字符串“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;
}

3 个答案:

答案 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;
}