関数 strncpy() は、指定された数の文字をコピー元からコピー先にコピーするために使用されます。
以下は strncpy() の構文です。
char *strncpy( char *destination, char *source, size_t n);
ここで、destination はソース文字列のコピー先となる宛先配列へのポインタ、source はコピーされる文字列、nソース文字列からコピーする最大文字数です。
ソース文字列の最初の n 文字に NULL 文字がない場合、ターゲット文字列は NULL で終了しないため、strncpy() 関数は安全ではありません。
以下は、C の strncpy() 関数を示すプログラムです。
オンライン デモンストレーション
#include <iostream> #include <cstring> using namespace std; int main () { char source[20] = "This is a string"; char dest[20]; strncpy(dest, source, 4); cout << "The destination string is: " << dest; return 0; }
上記のプログラムの出力は次のとおりです。
The destination string is: This
ここで、上記のプログラムを理解しましょう。
ソース文字列には「これは文字列です」というデータが含まれています。次に、strncpy() を使用して、最初の 4 文字をターゲット文字列にコピーします。次に、ターゲット文字列の内容を出力します。これを示すコード スニペットを以下に示します。
えええええ以上がなぜ C/C++ の strncpy は安全ではないと考えられるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。