[英]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.