我已经定义了 _GNU_SOURCE,但是当我尝试将 strcasestr 放入我的函数时,它只是说错误 LNK2019:函数中引用的未解析的外部符号 _strcasestr。我是否需要以某种方式导入特定的库或做其他事情?我也试过定义:
//char *strcasestr(const char *haystack, const char *needle);
#define _GNU_SOURCE
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
我使用它的方式
if ((strcasestr(str1,str2)) != NULL)
{
//code
}
还有其他方法可以比较不区分大小写的字符串吗?
最佳答案
strcasestr
是一个非标准函数。您将什么库与您的项目链接?如果您在 Windows 中使用 MingW,则此功能可能不可用,因为您的程序与 Microsoft C 运行时库相关联。
相同的功能可能以 stristr
或 _stristr
的名称提供。
否则,您可能必须编写自己的版本。
这是一个非常简单的:
#include <stdlib.h>
#include <ctype.h>
char *strcasestr(const char *str, const char *pattern) {
size_t i;
if (!*pattern)
return (char*)str;
for (; *str; str++) {
if (toupper((unsigned char)*str) == toupper((unsigned char)*pattern)) {
for (i = 1;; i++) {
if (!pattern[i])
return (char*)str;
if (toupper((unsigned char)str[i]) != toupper((unsigned char)pattern[i]))
break;
}
}
}
return NULL;
}
关于c - C 中的 strcasestr 如何工作。不断收到错误外部符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35674816/