文字列を追加する

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」です