基本介紹
- 中文名:strlcpy
- 外文名:strlcpy
- 功能:字元串複製
- 頭檔案:string.h
- 返回值類型:size_t
C語言函式,功能說明,與strncpy區別,
C語言函式
函式原型聲明:size_t strlcpy(char *dest, const char *src, size_t size)
頭檔案引用:#include <string.h>
返回值:src字元串的大小
函式參數:參數dest為目的字元串開始的指針,src為源字元串的開始地址,參數size代表dest字元串的大小
功能說明
strlcpy函式創建的目的主要是針對strcpy函式緩衝區溢出的問題,因為一旦strcpy調用中src的字元串長度超過了dst的緩衝區大小,就會造成緩衝區安全漏洞問題,這是一類常見也嚴重的計算機安全漏洞。當然strcat函式也有安全版本的strlcat函式。
與strncpy區別
類似的函式還有strncpy,但是strlcpy常常是更加安全地選擇,因為strlcpy在複製之後dst字元串一定會以'\0'字元結尾。代碼說明如下
#include <string.h>#include <stdio.h>int main(){ char buf[5]; char src[10] = "12345678"; strlcpy(buf, src, sizeof(buf)); printf("%s\n",buf);//輸出1234 return 0;}
上述示例中buf字元串最終結果是“1234\0”,以結束字元結尾,而如果同樣地情況下使用strncpy函式,代碼如下
#include <string.h>#include <stdio.h>int main(){ char buf[5]; char src[10] = "12345678"; strncpy(buf, src, sizeof(buf)); printf("%s\n",buf); return 0;}
這個時候buf最終結果就是"12345",並沒有以結束字元結尾。