C - 检查字符串是否包含任何非空字符

问题描述

我有一个带有两个字符串参数的函数。我必须检查两个字符串是否包含任何非空字符。这是一个示例代码

void fun(const char* str1,const char* str2)
{
    if (!str1 || !str1[0] || !str2 || !str2[0])
    {
        return;
    }

    // process
}

这是 C 语言中的标准方法还是您推荐其他解决方案?

解决方法

这样写条件就够了

if ( !str1[0] || !str2[0] )

即当传递空指针调用未定义行为时,函数遵循 C 标准字符串函数的约定。

函数的调用者应该保证传递的指针不是空指针。