-
strlcpy
鎖定
- 中文名
- strlcpy
- 外文名
- strlcpy
- 功 能
- 字符串複製
- 頭文件
- string.h
- 返回值類型
- size_t
目錄
- 1 C語言函數
- 2 功能説明
- 3 與strncpy區別
strlcpyC語言函數
函數原型聲明:size_t strlcpy(char *dest, const char *src, size_t size)
頭文件引用:#include <string.h>
返回值:src字符串的大小
函數參數:參數dest為目的字符串開始的指針,src為源字符串的開始地址,參數size代表dest字符串的大小
strlcpy功能説明
strlcpy函數創建的目的主要是針對strcpy函數緩衝區溢出的問題,因為一旦strcpy調用中src的字符串長度超過了dst的緩衝區大小,就會造成緩衝區安全漏洞問題,這是一類常見也嚴重的計算機安全漏洞。當然strcat函數也有安全版本的strlcat函數。
strlcpy與strncpy區別
#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",並沒有以結束字符結尾。
- 參考資料
-
- 1. FreeBSD Library Functions Manual STRLCPY .FreeBSD Manual Pages.2016-02-26[引用日期2017-05-26]
- 2. stackoverflow about strlcpy and strlcpy .stackoverflow.2011-08-08[引用日期2017-05-26]