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
関連項目
参照
- P2338R4 Freestanding Library: Character primitives and the C library
- C++26で、この関数がフリースタンディング処理系で使用可能になった