This function is a replacement for strcat.
这个函数是strcat 的替代品。
The size, in characters, of the destination buffer is provided to the function to ensure thatStringCchCat does not write past the end of this buffer.
目标缓冲区的大小,字符用来提供该函数保证StrCchCat不会溢出缓冲区。
HRESULT StringCchCat( LPTSTR pszDest, size_t cchDest, LPCTSTR pszSrc );
Parameters
-
pszDest
-
[in, out] Pointer to a buffer containing the string that pszSrc is concatenated to, and which contains the entire resultant string.
-
指向一个缓冲区,其中包含该字符串是pszSrc,其中包含整个结果字符串。
The string at pszSrc is added to the end of the string at pszDest.
字符串
pszSrc被连接到pszDest的结尾。
-
[in] Size of the destination buffer, in characters.
This value must equal the length of pszSrc plus the length of pszDest plus 1 to account for both strings and the terminating null character.
The maximum number of characters allowed is STRSAFE_MAX_CCH.
目标缓冲区的大小,字符,。
-
[in] Pointer to a buffer containing the source string that is concatenated to the end of
pszDest.
This source string must be null-terminated.
指向一个缓冲区,其中包含源字符串被连接到目标字符串
pszDest
的结尾。
cchDest
此值必须等于长度pszSrc加上长度pszDest加1考虑两个字符串和终止空字符。
允许的最大字符数是STRSAFE_MAX_CCH。
pszSrc
这个源字符串必须是以null(\0)结尾。
Return Value
This function returns an HRESULT, as opposed to strcat, which returns a pointer.
It is strongly recommended that you use the SUCCEEDED and FAILED macros to test the return value of this function.
Value | Description |
---|---|
S_OK | Source data was present, the strings were fully concatenated without truncation, and the resultant destination buffer is null-terminated. |
STRSAFE_E_INVALID_PARAMETER | The value in cchDest is 0 or larger than STRSAFE_MAX_CCH, or the destination buffer is already full. |
STRSAFE_E_INSUFFICIENT_BUFFER | The concatenation operation failed due to insufficient buffer space. The destination buffer contains a truncated, null-terminated version of the intended result. Where truncation is acceptable, this is not necessarily a failure condition. |
Remarks
StringCchCat provides additional processing for proper buffer handling in your code.
Poor buffer handling is implicated in many security issues that involve buffer overruns.StringCchCat always null-terminates a nonzero-length destination buffer.
StringCchCat can be used in its generic form, or specifically asStringCchCatA (for ANSI strings) or StringCchCatW (for Unicode strings). The form to use is determined by your data.
String data type | String literal | Function |
---|---|---|
char | "string" | StringCchCatA |
TCHAR | TEXT("string") | StringCchCat |
WCHAR | L"string" | StringCchCatW |
StringCchCat and its ANSI and Unicode variants are replacements for these functions:
Behavior is undefined if the strings pointed to by pszSrc and pszDest overlap.
Neither pszSrc nor pszDest should be NULL. See StringCchCatEx if you require the handling of null string pointer values.
Requirements
OS Versions: Windows CE 5.0 and later.
Header: strsafe.h.
Link Library: strsafe.lib.