strncpy_s、wcsncpy_s
string.h:インデックス への移動
ヘッダー ファイル
string.h、mbstring.h
カテゴリ
メモリおよび文字列操作ルーチン、インライン ルーチン
プロトタイプ
errno_t strncpy(char * _RESTRICT dest, rsize_t destmax, const char * _RESTRICT src, rsize_t n);
errno_t strncpy(wchar_t * _RESTRICT dest, rsize_t destmax, const wchar_t * _RESTRICT src, rsize_t n);
説明
Strncpy、mbsncpy、wcsncpy の代わりとなるもので、セキュリティ機能が強化されています。
1 つの文字列から別の文字列へ、指定されたバイト数をコピーします。その際に、必要であれば値を切り詰めたり埋めたりします。
strncpy_s は、src から dest へ最大 n 文字をコピーします。その際に、dest を切り詰めたり NULL で埋めたりします。 '\0' の後に出てくる文字はコピーされません。 src の長さが maxlen 以上であれば、コピー先文字列の dest に NULL 終端文字は含められません。
実行時制約の違反が起きるか、src から文字がまったくコピーされなかった場合には、dest[0] が NULL に設定されます。
戻り値
strncpy は dest を返します。
例
#include <stdio.h> #include <string.h> int main(void) { char string[10]; char *str1 = "abcdefghi"; strncpy_s(string, 10, str1, 3); string[3] = '\0'; printf("%s\n", string); return 0; }
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
strncpy_s |
+ |
+ |
+ |
+ |