天天看點

Linux C語言strlcpy,strlcat函數

常用字元串操作函數

strcat, 連接配接字元串
strcpy, 拷貝字元串

以上兩個函數經常會出現stack overflow問題,長度問題導緻的等。
以下兩個是相對安全一點的。
strncat
strncpy

但是,我個人常用的是snprintf函數,這個函數保證以NUL結尾的。是以從來不參考以上的函數。
           

發現新大陸

重溫privoxy源碼,發現了下面的函數

strlcpy
strlcat

隻不過這兩個函數并不是ANSI C标準庫的一部分。
源于BSD的代碼,既然有了這麼好的實作為什麼不加上呢? 很多平台下已經加上了這兩個函數包括Linux。
           

使用樣例

len = strlcpy(path, homedir, sizeof(path);
if (len >= sizeof(path))
    return (ENAMETOOLONG);

len = strlcat(path, "/" , sizeof(path);
if (len >= sizeof(path))
    return (ENAMETOOLONG);

len = strlcat(path, ".foorc", sizeof(path));
if (len >= sizeof(path))
    return (ENAMETOOLONG);
           

參考連結

https://www.sudo.ws/todd/papers/strlcpy.html

http://blog.csdn.net/kailan818/article/details/6731772

繼續閱讀