比较从strdup函数返回的值与strncmp

比较从strdup函数返回的值与strncmp,c,strcmp,C,Strcmp,我不熟悉C语言。我试图用strncmp函数比较从strdup返回的两个值,但得到以下错误: 错误:传递'strncmp'的参数2将指针从整数转换为不带强制转换[-Wint转换] 我的代码: if (0 == strncmp( strdup(str_to_dup1), strdup(str_to_dup2))) strncmp采用如下3个参数 int strncmp(const char *str1, const char *str2, size_t n) 在缺少第三个参数的代码中,要从中比较

我不熟悉C语言。我试图用strncmp函数比较从strdup返回的两个值,但得到以下错误:

错误:传递'strncmp'的参数2将指针从整数转换为不带强制转换[-Wint转换]

我的代码:

if (0 == strncmp( strdup(str_to_dup1), strdup(str_to_dup2)))

strncmp采用如下3个参数

int strncmp(const char *str1, const char *str2, size_t n)
在缺少第三个参数的代码中,要从中比较的最大字符数

strncmp

int strncmp const char*lhs,const char*rhs,size\u t count

在代码中,缺少strncmp的第三个参数,它是要比较的最大字符数

由于strdup返回的指针将在strncmp调用后丢失,您的程序可能存在内存泄漏。另外,您应该知道,如果发生错误,strdup可以返回空指针


您应该将strdup返回的指针指向一个变量,并确保检查是否发生了错误,然后将这些变量传递给strncmp。使用strdup返回的指针后,使用free释放它们。

strncmp接受3个参数,但只传递2个。此外,比较strdup的结果不是一个好主意,因为它们可能会失败并返回NULL。发布更多的代码将为整个问题提供更多答案:比较字符串。或者根本不复制它们。没有理由不将原始字符串传递给strncmp。