常用字元串操作函數
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