以下では、主に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」を追加します。