次の方法で共有


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 を返します。 呼び出し元は、十分な領域がエラー状態であると想定しても安全ではありません。

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

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

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

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winbase.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

概念

リファレンス

StringCbCopy の

StringCbCopyEx の

StringCbCopyN の

StringCbCopyNEx の

StringCchCopy

StringCchCopyEx の

StringCchCopyN の

StringCchCopyNEx

文字列の

lstrcmp を する

lstrcmpi を する

lstrlen を する