我是C
语言的新手。我试图比较来自strdup
的两个返回值,以及strncmp
函数,但是得到以下错误:
错误:传递'strncmp'的参数2使得整数指针没有强制转换[-Wint-conversion]
我的代码:
if (0 == strncmp( strdup(str_to_dup1), strdup(str_to_dup2)))
来自strncmp
STRNCMP
int strncmp(const char * lhs,const char * rhs,size_t count);
在你的代码中,你缺少strncmp
的第三个参数,它是要比较的最大字符数。
你的程序有潜在的内存泄漏,因为在strdup()
调用后strncmp()
返回的指针将丢失。此外,您应该知道,如果发生错误,strdup()
可以返回null
指针。
您应该将strdup()
返回的指针指向变量,并确保检查是否发生了某些错误,然后将这些变量传递给strncmp()
。一旦完成strdup()
返回指针,使用free()
释放它们。
strncmp需要3个参数,如下所示
int strncmp(const char *str1, const char *str2, size_t n)
在您的代码中缺少第三个参数,即要比较的最大数字字符