lstrcpyW 函式 (winbase.h)
將字串複製到緩衝區。
語法
LPWSTR lstrcpyW(
[out] LPWSTR lpString1,
[in] LPCWSTR lpString2
);
參數
[out] lpString1
類型:LPTSTR
接收 lpString2 參數所指向之字串內容的緩衝區。 緩衝區必須夠大,才能包含字串,包括終止的 Null 字元。
[in] lpString2
類型:LPTSTR
要複製的 Null 終止字串。
傳回值
類型:LPTSTR
如果函式成功,傳回值就是緩衝區的指標。
如果函式失敗,則傳回值會 NULL,且 lpString1 可能不會以 Null 終止。
言論
使用系統的雙位元組字元集 (DBCS) 版本,此函式可用來複製 DBCS 字串。
如果來源和目的地緩衝區重疊,則 lstrcpy 函式具有未定義的行為。
安全性備註
使用此函式不正確可能會危害應用程式的安全性。 此函式會使用結構化例外狀況處理 (SEH) 來攔截存取違規和其他錯誤。 當此函式攔截 SEH 錯誤時,它會傳回 NULL,而不會終止字串,而不通知呼叫者發生錯誤。 呼叫端無法放心地假設空間不足是錯誤狀況。lpString1 必須夠大,才能保存 lpString2 和結尾 '\0',否則可能會發生緩衝區滿溢。
緩衝區溢位情況是應用程式中許多安全性問題的原因,如果發生存取違規,可能會對應用程式造成阻斷服務攻擊。 在最壞的情況下,緩衝區滿溢可能會讓攻擊者將可執行的程式代碼插入您的進程,特別是如果 lpString1 是堆棧型緩衝區。
請考慮改用 StringCchCopy;使用 StringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);
,請注意 buffer
不得為指標,或是使用 StringCchCopy(buffer, ARRAYSIZE(buffer), src);
,請注意,當複製到指標時,呼叫端會負責傳入字元中指向記憶體的大小。
注意
winbase.h 標頭會將 lstrcpy 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | winbase.h (包括 Windows.h) |
連結庫 | Kernel32.lib |
DLL | Kernel32.dll |
另請參閱
概念
參考