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

WBOY
リリース: 2023-09-13 09:17:02
転載
1118 人が閲覧しました

なぜ 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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!