首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >strncpy能返回0吗?

strncpy能返回0吗?
EN

Stack Overflow用户
提问于 2015-11-07 17:43:55
回答 5查看 2.5K关注 0票数 4

strncpy的手册页声明:

char *strncpy(char *dest,const *src,size_t n); 函数的作用是: strcpy()和strncpy()函数返回指向目标字符串dest的指针。

如果strncpy(buff, "something", 9) == 0char buff[100],是否有可能是真的?

更新

我也认为这不太可能,但这是程序的一部分,我应该做缓冲区溢出,这个条件停留在我实现这个目标的路上。

EN

回答 5

Stack Overflow用户

发布于 2015-11-07 17:53:58

No..

从事实来看

  1. 0
  2. NULL指针不应指向有效对象。根据C11标准,第6.3.2.3节: ..。空指针,保证与指向任何对象或函数的指针不相等。

相应的手册页面没有提到dest == NULL的可能性,

不允许这样做。

票数 5
EN

Stack Overflow用户

发布于 2015-11-07 17:49:38

想想看。手册是怎么说的?它说它返回dest。因此,如果dest不是NULL,则返回值将不是NULL

因为buff永远不会是NULL (假设它是char buff[100]),那么您可以肯定地说,不,它永远不会返回NULL

如果是的话,它就会有个窃听器。

票数 4
EN

Stack Overflow用户

发布于 2015-11-07 17:55:51

在我看来,如果执行的代码不包含任何未定义的行为,那么给定的代码就不能返回NULL

唯一可以返回NULL的情况是,目标是NULL。在这种情况下(最有可能是),除非复制的字符数为0,否则执行将发生分段错误。

在给定的例子中:

代码语言:javascript
运行
复制
strncpy(buff, "something", 9)

目标既不能是NULL (因为它是char buff[100]),也不能复制字符数为0,因为它被指定为9。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33585789

复制
相关文章

相似问题

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