C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス strncat

🔧 文字列 ・ string.h ・ C89

strncat の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

char *strncat(char *dest, const char *src, size_t n);

どんな関数か

連結する文字数の上限を指定できるstrcatの安全版。ただし上限は「追加する文字数」であり、コピー先の残り容量そのものではない点に注意が必要になる。 追加後に必ず\0が付与される点は、終端が付かないことがあるstrncpyとの違いとして覚えておく。

使用例

#include <stdio.h>
#include <string.h>
int main(void) {
    char buf[16] = "Hello";
    strncat(buf, ", World!", sizeof(buf) - strlen(buf) - 1);
    puts(buf);
    return 0;
}

つまずきやすい注意点

⚠️ 第3引数に単純にsizeof(buf)を渡すと、既存文字列の分を考慮していないためオーバーフローする典型的な誤用がある。

アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ

strncat と一緒に使う関数

strcatコピー先文字列の末尾に別の文字列を連結する。コピー先バッファの残り容量を確認しないため、strcpy同様にオーバーフロー… strlen文字列の終端\0を除いた文字数(バイト数)を返す。文字列の長さ分だけ先頭から走査するためO(n)であり、ループの条件式な…

同じ分類(文字列)の関数

memcmp memcpy memmove memset memset_explicit strcat strchr strcmp strcoll strcpy strcspn strdup strerror strlen strncmp strncpy

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る