【问题标题】:Count number of words in a string of length less than n [duplicate]计算长度小于n的字符串中的单词数[重复]
【发布时间】:2016-02-23 01:14:35
【问题描述】:
int wordcount(char *str,int n)
  {
    int i=0,count=0,count1=0;

    for(i=0;i<strlen(str);i++)
      {
        if(str[i]!=' ' || str[i]!='\n' || str[i]!='\t')
         {
           count++;
         }

    else
    {
        if(count<=n)
        {
            count1++;
        }
    count=0;
    }


}
if(count<=n)
return (count1+1);
else
return count1;
}

计算str中字符数等于或小于length的单词数。单词两边必须有空格(空格、制表符、换行符或回车),除非它位于字符串 str 的开头或结尾。例如,如果 length == 3 ,该函数应该能够 计算所有出现的单词,例如 {the, in, a, of, all, ...等}

我的问题是:每当我在 if 语句中输入 '\n' 和 '\t' 和 '\r' 时,在 ' ' 旁边有一个 or 条件,它给出 0 作为答案,但如果我只使用 ' '它给了我正确的答案。

谁能给我解释一下?

【问题讨论】:

  • 请显示,而不是描述,您要询问的代码。
  • 把那个while循环改写成for循环,你就会看到发生了什么。
  • 由于您将其标记为 C++,因此使用 std::istringstream 使这变得非常简单。

标签: c string c-strings


【解决方案1】:

因为您在循环保护中使用了i++,所以您在循环中测试的字符是之后的那个,您刚刚确定不是终止字符串的空值。 p>

【讨论】:

  • 我明白了,但我的主要问题仍然是检查制表符和下一行字符,一旦我在 if 循环中添加带有 or 条件的这两个字符,它就会给我错误的值。
猜你喜欢
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 2017-10-09
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 2020-08-22
  • 2016-06-29
相关资源
最近更新 更多