strncpy_s和_TRUNCATE

http://www.cnblogs.com/rainduck/archive/2013/03/28/2986352.html

首先strncpy_s的函数原型如下:

errno_t strncpy_s(
   char *strDest,
   size_t numberOfElements,
   const char *strSource,
   size_t count
);

参数就不做介绍了,容易看懂。下面就几种情况介绍。主要涉及目标内存大小numberOfElements、拷贝的大小count以及源字符串的大小src_len.

1. numberOfElements > count,src_len>count时,复制count到目标区域;

2.numberOfElement>count,src_len<count时,复制src_len到目标区域;

3. numberOfElement<=count,src_len和count的关系任意时,抛出异常。

 

其中count不确定时,可以用_TRUNCATE代替,即最大可能的复制到目标区域,这时长度取决于1,2。即numberOfElements和src_len中较大的。

_TRUNCATE实际就是个宏定义,int-1.一个很大的数目。

posted @ 2013-04-09 18:14  赤色  阅读(387)  评论(0编辑  收藏  举报
知识共享许可协议本博客作品采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议进行许可。