lstrcpyA 関数 (winbase.h)

文字列をバッファーにコピーします。

警告 は使用しないでください。 代わりに StringCchCopy を使用することを検討してください。 「解説」を参照してください。
 

構文

LPSTR lstrcpyA(
  [out] LPSTR  lpString1,
  [in]  LPCSTR lpString2
);

パラメーター

[out] lpString1

種類: LPTSTR

lpString2 パラメーターが指す文字列の内容を受け取るバッファー。 バッファーは、終端の null 文字を含め、文字列を格納するのに十分な大きさである必要があります。

[in] lpString2

種類: LPTSTR

コピーする null で終わる文字列。

戻り値

種類: LPTSTR

関数が成功した場合、戻り値はバッファーへのポインターです。

関数が失敗した場合、戻り値は NULL で、 lpString1 は null で終了しない可能性があります。

解説

2 バイト文字セット (DBCS) バージョンのシステムでは、この関数を使用して DBCS ストリングをコピーできます。

lstrcpy 関数は、ソース バッファーと宛先バッファーが重複する場合に未定義の動作をします。

セキュリティに関する備考

この関数を誤って使用すると、アプリケーションのセキュリティが損なわれる可能性があります。 この関数は、構造化例外処理 (SEH) を使用して、アクセス違反やその他のエラーをキャッチします。 この関数は、SEH エラーをキャッチすると、文字列を null で終了せず、呼び出し元にエラーを通知せずに NULL を返します。 呼び出し元は、十分な領域がエラー状態であると見なしても安全ではありません。

lpString1lpString2 と終了 '\0' を保持するのに十分な大きさにする必要があります。そうしないと、バッファー オーバーランが発生する可能性があります。

バッファー オーバーフローの状況は、アプリケーションの多くのセキュリティ問題の原因であり、アクセス違反が発生した場合にアプリケーションに対するサービス拒否攻撃を引き起こす可能性があります。 最悪の場合、バッファー オーバーランにより、特に lpString1 がスタック ベースのバッファーである場合に、攻撃者が実行可能コードをプロセスに挿入する可能性があります。

代わりに StringCchCopy を使用することを検討してください。をStringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);buffer使用します。ポインターではないか、 を使用StringCchCopy(buffer, ARRAYSIZE(buffer), src);する必要があることに注意してください。ポインターにコピーする場合、呼び出し元は、ポイント先のメモリのサイズを文字で渡す責任があることに注意してください。

注意

winbase.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして lstrcpy を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winbase.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

概念

リファレンス

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

文字列

lstrcmp

lstrcmpi

lstrlen