在我的函数中,我想返回一个空字符串""
,函数如下所示:
char *myFunction(nodeType *arg){
if (something){
return anotherFunction(arg);
} else {
return EMPTYSTRING;
}
}
(EMPTYSTRING应替换为正确的表达式以返回""
)
我想出了一些方法:
return ""
return '\0'
返回空字符串的正确方法是什么?
答案 0 :(得分:7)
返回""不是一个好主意。因为它是const char,你可能会尝试将它从函数中取出来,这可能会使你的应用程序崩溃。
所以,我会返回strdup("")
,所以你可以安全地释放它。
答案 1 :(得分:3)
\0
确实是一个空指针常量,而不是一个空字符串,所以返回它仍然会返回一个空指针。
但是你在这里遇到了另一个问题。
如果anotherFunction
返回您不需要free()
的字符串,那么在此处返回""
是正确的。如果它返回一个必须malloc()
的动态free()
字符串,那么你还需要在这里返回一个动态分配的空字符串 - return calloc(1, 1);
就可以了。
答案 2 :(得分:2)
return '\0'
不正确;它是一个空字符。
return "";
更正确。
在实现数据结构之前,您可以创建一个小测试函数来测试返回空字符串。