计算长度小于n的字符串中的单词数

标签 c string c-strings

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, ...etc}

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

谁能给我解释一下吗?

最佳答案

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

关于计算长度小于n的字符串中的单词数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35567023/

相关文章:

c - 在链表中搜索元素

C Programming Word Search 不扫描第二次

c - 在 C 语言中,传递给函数的 char* 如何填充文本?

c - string concat C,有更好的解决方案吗?

java - 有没有办法去掉重音符号并将整个字符串转换为常规字母?

c - 修改结构中的 char *

c++ - 使用 c.str 将字符串转换为 cstring

c - 与互斥锁同步文件

c - 指向二维数组的指针

c++ - 如何使用键盘输入和 sf::Text 在 SFML 中添加一种文本框来显示文本字符串?