Cのstrcpy
導入:
strcpy は、文字列をある場所から別の場所にコピーする C 標準ライブラリ関数です。これは、string.h ヘッダー ファイルで定義されます。
この関数は 2 つの引数を取ります。コピーされた文字列が保存される宛先バッファーと、コピーされるソース文字列です。この関数は、ヌル終端文字を含むソース文字列全体を宛先バッファにコピーします。
の C strcpy() 関数 コピー 文字列の内容を別の文字列に変換します。宛先文字列の内容は次のようになります。 交換された strcpy() 関数によるソース文字列のそれと。内部で定義されています ヘッダファイル。
構文:
char* strcpy(char* destination, const char* source);
パラメーター: このメソッドは次のパラメータを受け入れます。
- destination : コンテンツがコピーされる宛先文字配列へのポインタ。 source: コピーされるソース文字配列へのポインタ。
戻り値: あ 宛先へのポインタ string は、strcpy() 関数がソース文字列をコピーした後に返されます。
例: 1
C
// C program to illustrate> // strcpy() function in C> #include> #include> int> main()> {> > char> str1[] => 'Hello World!'> ;> > char> str2[] => 'GfG'> ;> > char> str3[40];> > char> str4[40];> > char> str5[] => 'GeeksForGeeks'> ;> > strcpy> (str2, str1);> > strcpy> (str3,> 'Copy successful'> );> > strcpy> (str4, str5);> > printf> (> 'str1: %s
str2: %s
str3: %s
str4:%s
'> , str1,> > str2, str3, str4);> > return> 0;> }> |
出力
str1: Hello World! str2: Hello World! str3: Copy successful str4:GeeksForGeeks
例 2:
C
#include> #include> int> main()> {> > char> str1[20] => 'Hello'> ;> > char> str2[20];> > strcpy> (str2, str1);> > printf> (> 'str1: %s
'> , str1);> > printf> (> 'str2: %s
'> , str2);> > return> 0;> }> |
出力
str1: Hello str2: Hello
注意事項
- この関数を使用すると、文字列全体を宛先文字列にコピーできます。ソース文字列は宛先文字列に追加されません。その結果、宛先文字列の内容がソース文字列の内容に置き換えられます。
- ソース文字列は影響を受けません。コピー後、ソース文字列は変わりません。
- strcpy() を使用するには、 string.h ヘッダー ファイルをインクルードする必要があります。
- より長いソース文字列 (文字配列) の場合、strcpy() は未定義の動作を実行します。
長所と短所:
C で strcpy を使用する利点は次のとおりです。
これは、文字列をすばやく簡単にコピーするために使用できる、シンプルで使いやすい関数です。
これは標準ライブラリ関数であるため、さまざまなプラットフォームやコンパイラ間で広く利用でき、移植可能です。
コピーにはソース文字列を 1 回パスするだけで済むため、比較的高速です。
ただし、strcpy を使用する場合には考慮すべき欠点もいくつかあります。
宛先バッファのサイズはチェックされないため、ソース文字列が宛先バッファより長い場合、バッファが上書きされ、バッファ オーバーフローが発生する可能性があります。これにより、セキュリティの脆弱性やその他の問題が発生する可能性があります。
重複する文字列は適切に処理されません。ソース文字列と宛先文字列が重複する場合、strcpy の動作は未定義です。
ソース文字列内の null 文字は適切に処理されません。ソース文字列に null 文字が含まれている場合、ソース文字列に追加の文字があったとしても、strcpy はその時点でコピーを停止します。