strncpy
的手册页声明:
char *strncpy(char *dest,const *src,size_t n); 函数的作用是: strcpy()和strncpy()函数返回指向目标字符串dest的指针。
如果strncpy(buff, "something", 9) == 0
是char buff[100]
,是否有可能是真的?
更新
我也认为这不太可能,但这是程序的一部分,我应该做缓冲区溢出,这个条件停留在我实现这个目标的路上。
发布于 2015-11-07 17:53:58
No..
从事实来看
0
NULL
指针不应指向有效对象。根据C11标准,第6.3.2.3节:
..。空指针,保证与指向任何对象或函数的指针不相等。相应的手册页面没有提到dest == NULL
的可能性,
不允许这样做。
发布于 2015-11-07 17:49:38
想想看。手册是怎么说的?它说它返回dest
。因此,如果dest
不是NULL
,则返回值将不是NULL
。
因为buff
永远不会是NULL
(假设它是char buff[100]
),那么您可以肯定地说,不,它永远不会返回NULL
。
如果是的话,它就会有个窃听器。
发布于 2015-11-07 17:55:51
在我看来,如果执行的代码不包含任何未定义的行为,那么给定的代码就不能返回NULL
。
唯一可以返回NULL
的情况是,目标是NULL
。在这种情况下(最有可能是),除非复制的字符数为0,否则执行将发生分段错误。
在给定的例子中:
strncpy(buff, "something", 9)
目标既不能是NULL
(因为它是char buff[100]
),也不能复制字符数为0,因为它被指定为9。
https://stackoverflow.com/questions/33585789
复制相似问题