C++ で strncpy() 関数を使用する方法

C De Strncpy Guan Shuwo Shi Yongsuru Fang Fa



C++ には、strcpy、strncpy、memcpy など、文字列または文字をある場所から別の場所にコピーする関数が多数あります。それらは、機能によって互いに区別されます。このチュートリアルでは、 strncpy() C++ の関数。

C++ の strncpy() 関数とは

strncpy() 関数は、ある文字列から別の文字列に一定量の文字をコピーするために使用される組み込みの C++ 関数です。この関数には、文字を保持する宛先文字列、文字を提供するソース文字列、およびコピーする文字数の 3 つのパラメーターが必要です。ソース文字列が指定された文字数よりも少ない場合、宛先文字列は残りの長さまでヌル文字で埋められます。

strncpy() 関数のプロトタイプを以下に示します。







チャー * strncpy ( チャー * 定数 チャー * src、 size_t カウント ) ;

C++ strncpy() のパラメータは何ですか

のすべてのパラメータ strncpy() 機能を以下に説明します。



  • 手: コンテンツの格納先配列へのポインタ
  • ソース: コンテンツのソース配列へのポインター
  • カウント: ソースから宛先にコピーできる最大文字数。

strncpy() 関数は C++ でどのように機能しますか?

strncpy() 関数は 3 つの引数を受け入れます。 宛先、ソース、 カウント .かどうかをチェックします。 ソース 文字列は null で終了し、そうであれば、指定された文字数を ソース への文字列 始める 弦。カウントが ソース string、最初の count 文字が転送されました 始める 文字列であり、null で終了していません。カウントが ソース 、からのすべての文字 ソース にコピーされます 始める 、すべてのカウント文字が書き込まれるまで、追加の終端ヌル文字が含まれています。



与えられた例は、C++ の動作を示しています strncpy() 関数。





#include
#include
使用して 名前空間 標準 ;
整数 主要 ( )
{
チャー src_str [ ] = 'strncpy のコードを書いています' ;
チャー dest_str [ 60 ] ;
strncpy ( dest_str、src_str、 ストレン ( src_str ) ) ;
カウト << dest_str << ' \n ' ;
戻る 0 ;
}

このプログラムでは、 ヘッダーファイルが含まれているため strncpy() 関数。 2 つの文字列を定義しました。 src_str そしてもう一つは dest_str. strncpy() からデータを取得する関数 src_str 文字列 にコピーします。 dest_str .ここ strlen(src_str) からの合計文字数をカウントするために使用されます src_str 文字列 .

出力 プログラムの以下に示すことができます。



C++ で strncpy() を使用する際の問題は何ですか?

  • 宛先配列に null 文字がない場合、または文字列が null で終了していない場合、プログラムまたはコードは遅かれ早かれ問題に遭遇する可能性があります。 C++ の null 以外で終了する文字列は、プログラムの実行中にいつでも壊れる可能性がある危険なコードになっています。プログラムでセグメンテーション違反が発生する可能性があります。結果として、 strncpy() 宛先文字列が常に null で終了することを保証しないため、作成中のプログラムにとって危険なコードになります。
  • この関数はオーバーフローのチェックに失敗するため、ソース文字列をソースより小さいサイズの宛先にコピーしようとすると、エラーが発生し、未定義の動作が発生します。

結論

ある文字列から別の文字列にデータをコピーするには、次を使用します strncpy() の組み込み関数である C++ で ヘッダファイル。この記事では、C++ の構文と動作について説明しました。 strncpy 関数と例を示します。また、いくつかの問題を強調しました。 strncpy 関数は、コードを危険にさらす可能性があります。