在C语言中如何检测字符串为空字符串,最近看到twitter上有对此问题讨论,让我学习到了很多新的知识点。

使用 strlen 判断空字符串

使用 strlen 接口进行判断,这是我看到这个问题时的第一反应,示例代码段如下:

bool CheckStringEmpty(const char* pStr) {
    return pStr && strlen(pStr) > 0;
}

这段代码肯定是符合要求的,通过判断字符串的长度来确定字符串非空。但是这并不是最优解,因为 strlen 需要扫描整个字符串才能得到字符串的长度。

效率改进的空字符串判断

判断空字符串只需要保证字符串长度大于0,所以仅需要检查第一个字符是否为结束字符即可。示例代码段如下:

bool CheckStringEmpty(const char* pStr) {
    return pStr && pStr[0];
}

思考

这个问题其实并不是很难,但是又比较零碎,而且随着硬件设备的性能逐渐提高,这种关乎性能的问题很容易被忽略。
只有在硬件资源比较紧张时才有可能扣这些细节,优秀的代码就是在这些细节上做到无可挑剔。以此共勉。

参考资料

(全文完)