将strdup函数的返回值与strncmp进行比较

问题描述 投票:-1回答:2

我是C语言的新手。我试图比较来自strdup的两个返回值,以及strncmp函数,但是得到以下错误:

错误:传递'strncmp'的参数2使得整数指针没有强制转换[-Wint-conversion]

我的代码:

if (0 == strncmp( strdup(str_to_dup1), strdup(str_to_dup2)))
c strcmp
2个回答
2
投票

来自strncmp

STRNCMP

int strncmp(const char * lhs,const char * rhs,size_t count);

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

你的程序有潜在的内存泄漏,因为在strdup()调用后strncmp()返回的指针将丢失。此外,您应该知道,如果发生错误,strdup()可以返回null指针。

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


0
投票

strncmp需要3个参数,如下所示

int strncmp(const char *str1, const char *str2, size_t n)

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

© www.soinside.com 2019 - 2024. All rights reserved.