名前空間
変種
操作

strndup

From cppreference.com
< C‎ | experimental‎ | dynamic
ヘッダー <string.h> で定義
char *strndup( const char *str, size_t size );
(動的メモリーTR)

strが指す文字列から、最大sizeバイトをコピーした、ヌル終端のバイト文字列へのポインタを返します。最初のsizeバイト内にヌル終端文字が見つからない場合は、複製された文字列に追加されます。

メモリリークを避けるために、返されたポインタはfreeに渡す必要があります。

エラーが発生した場合、ヌルポインタが返され、errnoが設定される場合があります。

Dynamic Memory TRのすべての関数と同様に、strndupは、実装によって__STDC_ALLOC_LIB__が定義され、ユーザーがstring.hをインクルードする前に__STDC_WANT_LIB_EXT2__を整数定数1として定義した場合にのみ、利用が保証されます。

目次

[編集] パラメータ

str - 複製するヌル終端バイト文字列へのポインタ
size - strからコピーする最大バイト数

[編集] 戻り値

新しく割り当てられた文字列へのポインタ、またはエラーが発生した場合はヌルポインタ。

[編集] 注記

この関数は、POSIXのstrndupと同一ですが、エラー時にerrnoを設定してもよい(必須ではない)点が異なります。

[編集]

#ifdef __STDC_ALLOC_LIB__
#define __STDC_WANT_LIB_EXT2__ 1
#else
#define _POSIX_C_SOURCE 200809L
#endif
 
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    const char *s1 = "String";
    char *s2 = strndup(s1, 2);
    printf("strndup(\"String\", 2) == %s\n", s2);
    free(s2);
}

出力

strndup("String", 2) == St

[編集] 関連項目

(動的メモリーTR)
文字列のコピーを確保する
(関数) [編集]
ある文字列から別の文字列に指定された文字数をコピーする
(関数) [編集]
メモリを割り当てる
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)