文字列のコピー方法と落とし穴

以下では、主にmemcpy、strcpy、stringの3つのタイプについて説明します::コピー

メモリコピーmemcpy

トラップ
メモリコピーは文字列の終了文字 '\ 0'をチェックしません

結果
コピー、文字列の最後に文字化けが表示されます。

解決策
メモリを申請するときは、1バイトのメモリを申請して、文字列の末尾が確実にコピーされるようにします。

文字列コピーstrcpy

strcpyは文字列のコピー専用の関数で、memcpyとの違いは終了文字 '\ 0'を検出するため、メモリを申請するときに追加のアプリケーションを実行する必要がないことです。

構文/プロトタイプ:
char * strcpy(char * strDestination、const char * strSource);

パラメーターの説明:
strDestination:宛先文字列。
strSource:ソース文字列。

strcpy()は、strSourceが指す文字列をstrDestinationにコピーします。

strDestinationがstrSourceに対応できる十分な大きさであることを確認する必要があります。そうでない場合、オーバーフローエラーが発生します。

文字列メソッドコピー文字列::コピー

トラップと結果
ここで最終的にコピーによって呼び出される関数はまだmemcopyであるため、トラップは同じです。コピーが完了すると、文字化けした文字列が文字列の後ろに表示されます

解決策
コピー後、終了文字「\ 0」を追加します。

181のオリジナル記事を公開 13のような 訪問者10,000以上

おすすめ

転載: blog.csdn.net/qq_43461641/article/details/105075700