C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス strndup

🔧 C23 ・ string.h ・ C23

strndup の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

char *strndup(const char *s, size_t n);

どんな関数か

文字列の先頭から最大n文字を複製し、新たに確保した領域へコピーする。コピー元がn文字より短ければそこで打ち切り、必ず終端\0を付ける。C23で標準化された複製関数。 コピー元がヌル終端されていなくても、n文字までしか読まないため安全に使える点がstrdupとの違い。

使用例

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void) {
    char *s = strndup("hello world", 5);
    if (s) {
        puts(s);
        free(s);
    }
    return 0;
}

つまずきやすい注意点

⚠️ 戻り値は動的確保されるため、strdupと同様に使い終わったら必ずfreeする。

アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ

strndup と一緒に使う関数

strdup文字列を複製し、複製先の領域をmallocで新たに確保して返す。C23で標準化されたが、以前からPOSIXや多くの処理系… strncpy最大n文字までコピーするstrcpyの安全版だが、コピー元がn文字以上あると終端の\0が付かず、逆に短いと残りが\0で埋… freemalloc/calloc/reallocで確保したメモリ領域を解放する。解放後は同じポインタを再利用してはいけない(必…

同じ分類(C23)の関数

ckd_add ckd_mul ckd_sub free_aligned_sized free_sized stdc_bit_ceil stdc_bit_floor stdc_bit_width stdc_count_ones stdc_count_zeros stdc_has_single_bit stdc_leading_zeros stdc_trailing_zeros

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る