memrootじしょ
英和翻訳
strlcpy
strlcpy
[stɜːrlˈkɒpi]
ストレルコピー
1.
null終端文字列をバッファサイズを考慮して安全にコピーするC言語の関数。
strcpyなど従来の文字列コピー関数が持つバッファオーバーフローの脆弱性に対処するために設計されました。この関数は、コピー先のバッファの最大サイズを引数として受け取り、そのサイズを超えないように文字列をコピーし、常にNULL終端することを保証します。これにより、プログラムのセキュリティと安定性が向上します。
char
dest[20];
strlcpy(dest,
"Hello,
World!",
sizeof(dest));
(20バイトのdest配列に"Hello, World!"を安全にコピーします。)
char dest[20]
20バイト分の領域を持つ文字配列destを宣言します。
strlcpy
C言語の関数で、指定されたサイズ内で文字列を安全にコピーします。
dest
コピー先の文字列バッファです。
"Hello, World!"
コピーする元の文字列です。
sizeof(dest)
コピー先のバッファの合計サイズをバイト単位で取得します。これにより、バッファオーバーフローを防ぎます。
char
buf[5];
strlcpy(buf,
"VeryLongStringExample",
sizeof(buf));
(5バイトのbufに長い文字列をコピーしますが、バッファサイズを超えないよう切り詰められます。)
char buf[5]
5バイト分の領域を持つ文字配列bufを宣言します。
strlcpy
C言語の関数で、指定されたサイズ内で文字列を安全にコピーします。
buf
コピー先の文字列バッファです。
"VeryLongStringExample"
コピーしようとしている元の非常に長い文字列です。
sizeof(buf)
コピー先のバッファの合計サイズを取得します。これにより、文字列がバッファに収まらない場合でも安全に切り詰められ、NULL終端されます。
size_t
copied_len
=
strlcpy(myBuffer,
"short",
sizeof(myBuffer));
(文字列をmyBufferにコピーし、元の文字列長をcopied_lenに格納します。)
size_t copied_len
コピー元の文字列の長さ(NULL終端を除く)を格納するための変数copied_lenを宣言します。
strlcpy
C言語の関数で、指定されたサイズ内で文字列を安全にコピーします。
myBuffer
コピー先の文字列バッファです。
"short"
コピーする元の文字列です。
sizeof(myBuffer)
コピー先のバッファの合計サイズを取得します。strlcpyはコピー先のサイズを考慮し、元の文字列の長さを返します。
関連
strcpy
strncpy
strncat
snprintf