ホームページ  >  記事  >  バックエンド開発  >  なぜ C/C++ の strncpy は安全ではないと考えられるのでしょうか?

なぜ C/C++ の strncpy は安全ではないと考えられるのでしょうか?

WBOY
WBOY転載
2023-09-13 09:17:021119ブラウズ

なぜ C/C++ の strncpy は安全ではないと考えられるのでしょうか?

関数 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 サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。