簡體   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