【发布时间】:2021-06-12 20:22:21
【问题描述】:
我有一个带有两个字符串参数的函数。我必须检查两个字符串是否包含任何非空字符。这是一个示例代码:
void fun(const char* str1, const char* str2)
{
if (!str1 || !str1[0] || !str2 || !str2[0])
{
return;
}
// process
}
这是 C 中的标准方法还是您推荐其他解决方案?
【问题讨论】:
-
你可以看看strlen
-
包含任何非空字符的 string 将包含它作为第一个字符。如果您的指针本身可以是
NULL,那么您的代码对我来说看起来不错。strlen在这里会有点矫枉过正,也不适用于NULL指针。 -
根据函数的作用,检查每个字符串是否为非零长度可能是您不需要检查的多余边缘情况。验证指针不为空很好,但您可能应该重构代码,以便您不需要检查边缘情况。但是不知道函数的用途就很难说。
-
"这是 C 中的标准方法" --> 测试指向字符串的函数参数是否包含任何非空字符不是标准做法。标准做法是使用字符串,即使
"".
标签: c if-statement c-strings function-definition null-pointer