首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >strlen未检查是否为空

strlen未检查是否为空
EN

Stack Overflow用户
提问于 2011-04-27 04:32:27
回答 4查看 60K关注 0票数 34

为什么strlen()不检查NULL?

如果我执行strlen(NULL),程序分段就会出错。

试图理解它背后的理由(如果有的话)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-27 04:34:13

它背后的理性很简单--您如何检查不存在的东西的长度?

此外,与“托管语言”不同的是,运行时系统不会正确处理无效数据或数据结构。(这种类型的问题正是为什么更“现代”的语言在非计算或性能要求较低的应用程序中更受欢迎)。

C++中的标准模板如下所示

 int someStrLen;

 if (someStr != NULL)  // or if (someStr)
    someStrLen = strlen(someStr);
 else
 {
    // handle error.
 }
票数 37
EN

Stack Overflow用户

发布于 2011-04-27 04:34:59

标准并不要求它,所以实现只是避免了测试和潜在的昂贵的跳跃。

票数 5
EN

Stack Overflow用户

发布于 2014-01-02 19:29:20

一个小小的宏来帮助你的悲痛:

#define strlens(s) (s==NULL?0:strlen(s))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5796103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档