我是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()
释放它们。
关于c - 比较strdup函数的返回值和strncmp,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54957529/