最終更新日時:
が更新

履歴 編集

function
<cstring>

std::strncpy

namespace std {
  char* strncpy(char* s1, const char* s2, size_t n);
}

概要

文字列を、上限サイズを指定してコピーする。

効果

s2が指す配列からs1が指す配列へ、最大nバイトをコピーする。s2の終端ヌル文字の後ろにあるバイトはコピーされない。

s2の長さ (終端ヌル文字を含まない) がn未満である場合、s1の残りのバイトはヌル文字で埋められる。

s2の長さ (終端ヌル文字を含まない) がn以上である場合、s1にはヌル文字が付加されない。

コピー元とコピー先の領域が重なっている場合、動作は未定義である。

戻り値

s1を返す。

備考

  • この関数は、フリースタンディング処理系でも使用できる。
  • コピー元の長さがn以上の場合、コピー先はヌル終端されないため、文字列として扱う際には注意が必要である。

#include <cstring>
#include <iostream>

int main()
{
  char dst[8] = {};

  // 最大8バイトをコピーする。"hello"は5文字なので、残りはヌル文字で埋められる
  std::strncpy(dst, "hello", sizeof(dst));

  std::cout << dst << std::endl;
}

出力

hello

バージョン

言語

  • C++98

関連項目

  • strcpy: 文字列をコピーする
  • strncat: 文字列を結合する(上限サイズ指定)
  • strndup: 文字列を複製する(上限サイズ指定)

参照