在c中返回空字符串

时间:2017-10-01 17:56:01

标签: c string

在我的函数中,我想返回一个空字符串"",函数如下所示:

char *myFunction(nodeType *arg){
   if (something){
      return anotherFunction(arg);
   } else {
      return EMPTYSTRING;
   }
}

(EMPTYSTRING应替换为正确的表达式以返回""

  

我想出了一些方法:

return ""

return '\0'

返回空字符串的正确方法是什么?

3 个答案:

答案 0 :(得分:7)

返回""不是一个好主意。因为它是const char,你可能会尝试将它从函数中取出来,这可能会使你的应用程序崩溃。

所以,我会返回strdup(""),所以你可以安全地释放它。

答案 1 :(得分:3)

\0确实是一个空指针常量,而不是一个空字符串,所以返回它仍然会返回一个空指针。

但是你在这里遇到了另一个问题。

如果anotherFunction返回您不需要free()的字符串,那么在此处返回""是正确的。如果它返回一个必须malloc()的动态free()字符串,那么你还需要在这里返回一个动态分配的空字符串 - return calloc(1, 1);就可以了。

答案 2 :(得分:2)

return '\0'不正确;它是一个空字符。

return "";

更正确。

在实现数据结构之前,您可以创建一个小测试函数来测试返回空字符串。