UNIXプログラミング質問すれ Part4
■ このスレッドは過去ログ倉庫に格納されています
0382デフォルトの名無しさん
NGNG仕様確認すんの面倒だから長さの判定が必要ならmemcpy使うし。
結局strlcpy と strlcatもstrnと同じ問題抱えてる。
strcat使う局面でバッファ管理するぐらいなら↓を使う。
s = strdup("hage");
s = strdupcat(s, "hage");
s = strdupcat(s, "hage");
s = strdupcat(s, "hage");
#define strdupcat2(s,cat1,cat2) strdupcat(strdupcat((s),(cat1)),(cat2))
#define strdupcat3(s,cat1,cat2,cat3) strdupcat(strdupcat2(s,cat1,cat2),(cat3))
#define strdupcat4(s,cat1,cat2,cat3,cat4) strdupcat(strdupcat3(s,cat1,cat2,cat3),(cat4))
strdupcat(s,cat) {
int catlen = strlen(cat);
if (s) {
int slen = strlen(s);
s = xrealloc(s, slen + catlen + 1);
memcpy(s + slen, cat, catlen);
*(char *)(s + slen + catlen) = 0;
} else {
s = xcalloc(1,catlen+1);
memcpy(s, cat, catlen);
*(char *)(s + catlen) = 0;
}
return s;
}
■ このスレッドは過去ログ倉庫に格納されています