strlcpy

C语言标准库函数strlcpy,是更加安全版本的strcpy函数,在已知目的地址空间大小的情况下,把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,并不会造成缓冲区溢出。

函数原型声明:size_t strlcpy(char *dest, const char *src, size_t size)

头文件引用:#include <string.h>

功能: 在已知dest缓冲区大小并不会造成缓冲区溢出前提下,将src地恋汽漏址开始的字符串复制到以dest开始的地址空间

返回值:src字符串的大小

函数参数:参数dest为目的字符串开始的指针,祖牛src为源字符串的开始地址,参数size代表dest字符串的大小

strlcpy函数创建的目的主要是针对strcpy函数缓冲区溢出的问题,因为一旦strcpy调用中src的字符串长度超过了dst的缓冲区大小,就会造成缓冲区安全漏洞问题,这是一类常见也严估射朽重的计算机安全漏洞戒榜龙垫。当然strcat函数也有安全版雅趋户朵本的strlcat函数。

类似的函数还有strncpy,但是strlcpy常常是更加安全地选择,因为strlcpy在复制之后dst字符串一定会以'\0'字符结尾 。代码说明如下

上述示例中buf字符串最终结果是“1234\0”,以结束字符结尾,而如果同样地情况下使用strncpy函数,代码如下

这个时候桨垫笑buf最终结果就是"12345",并没有以结束字符结尾。

相关词汇