文字列を追加する
strcat、wcscat、_mbscat
【書式】
char *strcat(
char *strDestination,
const char *strSource
);
wchar_t *wcscat(
wchar_t *strDestination,
const wchar_t *strSource
);
unsigned char *_mbscat(
unsigned char *strDestination,
const unsigned char *strSource
);
【引数】
strDestination NULLで終わる追加先の文字列
strSource NULLで終わる元の文字列
【戻り値】
成功時 追加先の文字列 (strDestination)
失敗時 エラーを示す戻り値は予約されていません
【機能】
strcat関数は、strDestinationの終端にstrSourceを追加し、結果の文字列の終端にNULL文字を付けます。
strSourceの先頭の文字によってstrDestinationの終端のNULL文字が上書きされます。
追加元と追加先の文字列が重なり合っているときのstrcat関数の動作は未定義です。
strcatは、strSourceを追加する前にstrDestinationに十分な領域があるかどうかを確認しないため、
バッファオーバーランが発生する可能性があります。代わりに、strncatの使用を検討してください。
wcscat関数と_mbscat関数は、strcat関数のワイド文字バージョンとマルチバイト文字バージョンです。
wcsca 関数の引数と戻り値はワイド文字列で、_mbscat関数の引数と戻り値はマルチバイト文字列です。
それ以外では、これらの関数の動作は同じになります。
【インクルードファイル】
strcat関数関数 string.h
wcscat関数関数 string.h または wchar.h
_mbscat関数関数 mbstring.h
【必要追加ライブラリ】
なし
使用例
〈サンプルプログラム〉
/* 文字列と文字列を連結して出力する */
#include <stdlib.h>
#include <stdio.h> /* printfを使用するため */
int main(void)
{
char fname[20];
char string1[] = "file";
char string2[] = ".txt";
strcpy(fname, string1);
strcat(fname, string2);
printf("「%s」と「%s」が連結された文字列は「%s」です\n", string1, string2, fname);
return 0;
}
〈出力〉
「file」と「.txt」が連結された文字列は「file.txt」です