我是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/

10-16 07:18