strncat | Programming Place Plus C言語編 標準ライブラリのリファレンス

トップページC言語編標準ライブラリのリファレンス(名前順)

トップページC言語編標準ライブラリのリファレンス(ヘッダ別)


strncat関数

概要

指定文字数以下の文字列を連結する。

ヘッダ

string.h

形式

char* strncat(char* restrict s1, const char* restrict s2, size_t n);

引数

s1

連結先の文字列。

s2

連結元の文字列。

n

連結する最大文字数。

戻り値

s1 を返す。

詳細

s1 の末尾に s2 を n文字だけ連結する(s1 の末尾にあったヌル文字が s2 の先頭の文字で上書きされる)。s2 の終端にあったヌル文字は連結しない。
s2 に含まれている文字数が、n に満たない場合は、s2 の全体が連結される。
n文字分の連結を終えた後、s1 の末尾にヌル文字が付加される。そのため、結果として s1 には、「strlen(s1) + n + 1」以上の大きさが必要である。

注意

s1 が指す配列に、連結後の文字列を許容できるだけの大きさが必要である。不足していた場合、バッファオーバーフローになるので、その結果は未定義である。
連結結果が含まれる範囲と、連結元の範囲とが重複していた場合の動作は未定義である。

使用例

#include <stdio.h>
#include <string.h>

int main(void)
{
    char s[80];

    strcpy(s, "abcde");
    puts(strncat(s, "fghij", 3));
    puts(s);
}

実行結果:

abcdefgh
abcdefgh

関連

連結する最大文字数を指定しない strcat関数がある。
ワイド文字列版の wcsncat関数がある。

解説章


参考リンク


更新履歴

’2018/4/22 解説中で C95 を(C89 に対して)特別扱いしないように修正。そもそもC言語編は C95ベースなので、余計な説明は省く。

’2018/4/17 全体的に文章を見直し修正。

’2018/1/22 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る