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