strcat
strcatは、あるstring.h
に
書式
#include <string.h>
char *strcat(char *s1, const char *s2);
機能
s2が
実装 例
char *StrCat(char *s1, const char *s2)
{
char *p = s1;
while(*s1++); /* s1を最後 まで進 める */
while(*s1++ = *s2++); /* s2をコピーする */
return p;
}
バッファオーバーランの危険 性 と対策
strcatは、
char s1[80] = "filename";
const size_t bufsize = sizeof(s1); /* 固定 長 char配列 の要素 数 を求 める */
const size_t s1len = strlen(s1);
const char* s2 = ".exe";
const size_t s2len = strlen(s2);
if (s1len + s2len + 1 <= bufsize) /* 1は終端 NUL文字 用 */
{
memcpy(s1 + s1len, s2, s2len + 1);
/* 以下 でも可能 だが、さらに冗長 となるだけで意味 はない。 */
/*strcat(s1, s2);*/
/*strncat(s1, s2, s2len);*/
}
strlenで
char
s1
s1
のs1len + s2len + 1
が
StringCchCat()
やStringCchCatN()
が
脚注
関連 項目
外部 リンク
strcat(3)
– JM Project Linux Library Functions マニュアル