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

🔧 文字列 ・ string.h ・ C89

strncpy の使い方

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

書式

char *strncpy(char *dest, const char *src, size_t n);

どんな関数か

最大n文字までコピーするstrcpyの安全版だが、コピー元がn文字以上あると終端の\0が付かず、逆に短いと残りが\0で埋められるという独特の仕様に注意が必要。 固定長フィールドへの文字列格納など、余白をヌル文字で埋めたい特殊な用途に向いた関数でもある。

使用例

#include <stdio.h>
#include <string.h>
int main(void) {
    char dest[8];
    strncpy(dest, "hi", sizeof dest);
    puts(dest);
    return 0;
}

つまずきやすい注意点

⚠️ コピー元が指定サイズ以上の長さだと\0終端されない。コピー後にdest[n-1]='\0'を明示すると安全。

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

strncpy と一緒に使う関数

strcpy文字列をコピー先バッファへコピーする。コピー先のサイズを一切考慮しないため、コピー元がコピー先より長いとバッファオーバー… strlen文字列の終端\0を除いた文字数(バイト数)を返す。文字列の長さ分だけ先頭から走査するためO(n)であり、ループの条件式な…

この関数が出てくる解説

安全な文字列操作——バッファサイズの意識バッファオーバーフローの危険を理解し、snprintfやfgetsで安全に書ける

同じ分類(文字列)の関数

memcmp memcpy memmove memset memset_explicit strcat strchr strcmp strcoll strcpy strcspn strdup strerror strlen strncat strncmp

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

完全版(BOOTH)を見る