繁体   English   中英

c 编程 function 不返回 false

[英]c programming function doesn’t return false

     #include "ctype.h"
     #include "string.h"
     #include "stdbool.h"
     #include "stdio.h"

   int check_for_sub_string(char s[],char word[])
  {
   int flag = false;
   char mark[]=" ";
   char *tok;
   tok = strtok(s,mark);
   while (tok!=NULL)
   {
    tok= strtok(NULL,mark);
    if (strcmp(tok,word)==0)
    {
        flag= true;
        return flag;
    }
    else flag = false;

   }return flag;
  }

据说,当我使用不在字符串中的单词运行代码时,它不会返回 0。我不知道为什么。 例如,我使用 s[]="this is a test string" 和 word[]="kol" 运行它,它不会返回 0。我将返回标志放在循环的末尾,所以如果它没有'找不到返回false的词。

它不会返回 false 因为它崩溃(或至少调用未定义的行为):当您到达字符串的末尾时, strtok返回 NULL,但您立即将 NULL 指针传递给strcmp 测试tok != NULL直到循环体结束时才会发生,这为时已晚。

像这样重建你的循环:

for (tok = strtok(s,mark);
     tok!=NULL;
     tok = strtok(NULL,mark))
{
      .....
}

这将在每次迭代使用之前检查tok是否为非空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM