Функция StringCchCatN

Функция StringCchCatN - это замена для функции strncat. Размер, в символах, целевого буфера назначается в функцию для гарантии, что StringCchCatN не запишет помимо конца этого буфера.

Синтаксис

HRESULT StringCchCatN(      

    LPTSTR pszDest,
    size_t cchDest,
    LPCTSTR pszSrc,
    size_t cchMaxAppend
);

Параметры

pszDest

[in, out] Указатель на буфер, содержащий строку, с которой pszSrc объединяется, и который содержит в себе всю результирующую строку. Строка в pszSrc, длиной до cchMaxAppend символов, добавляется в конец строки в pszDest.

cchDest

[in] Размер целевого буфера, в символах. Это значение должно равняться длине pszSrc плюс, или длина pszDest, или плюс cchMaxAppend (который параметр меньше). К этой сумме добавляют 1, чтобы принять во внимание символ завершающего нуля. Максимальное допустимое число символов является STRSAFE_MAX_CCH.

pszSrc

[in] Указатель на буфер, содержащий исходную строку, которая объединяется до конца pszDest. Эта исходная строка должна быть завершена символом конца строки ('\0').

cchMaxAppend

[in] Максимальное число символов, которое добавляется в конец к pszDest.

Возвращаемое значение

Обратите внимание! на то, что функцией возвращается значение HRESULT в противоположность функции strncat, которая возвращает указатель. Поэтому настоятельно рекомендуется, чтобы вы использовали макросы SUCCEEDED и FAILED для проверки возвращаемого значения этой функцией.

 

Значение

Предназначение

S_OK Исходные данные присутствовали, строки объединялись без усечения, а итоговый результат целевого буфера завершен символом конца строки ('\0').
STRSAFE_E_INVALID_PARAMETER Значение в cchDest или больше, чем STRSAFE_MAX_CCH, или целевой буфер уже заполнен.
STRSAFE_E_INSUFFICIENT_BUFFER Операция конкатенации завершилась ошибкой из-за недостаточного пространства буфера. Целевой буфер содержит обрезанную, версию с нулевым символом в конце предполагаемого результата. В ситуациях, где усечение является приемлемым, это может не обязательно быть отмечено как условие сбоя.

Замечания

Функция StringCchCatN предусматривает дополнительную обработку для правильной работы буфера в Вашем коде. Недостаточная обработка буфера влечет за собой многие проблемы обеспечения безопасности, которые вызывают переполнение буфера. Функция StringCchCatN целевой буфер ненулевой длины всегда завершает символом конца строки ('\0').

StringCchCatN может быть использована в своей общей форме, или в специальной - типа StringCchCatNA (для строк ANSI), или StringCchCatNW (для строк Unicode). Форма использования определяется Вашими данными.

Тип данных строки

Строковый литерал

Функция

char "string" StringCchCatNA
TCHAR TEXT("string") StringCchCatN
WCHAR L"string" StringCchCatNW

Функция StringCchCatN и её ANSI и Unicode варианты - замены для этих функций:

Поведение неопределенное, если строки указанные при помощи параметров pszSrc и pszDest перекрываются.

Ни pszSrc, ни pszDest не должны быть NULL. См. StringCchCatNEx, если требуется обработка значений указателя пустой строки.

Смотри также

Обзор Строки, Функции, используемые строками, StringCbCatN, StringCchCatNEx, StringCchCat

Размещение и совместимость StringCchCatN
К Windows XP Да
л Windows 2000 Professional Да
и Windows NT Workstation Да версии 3.1
е Windows Me Да
н Windows 98 Да
т Windows 95 Да
 
С Windows Server 2003 Да
е Windows 2000 Server Да
р Windows NT Server Да версии 3.1
в    
е    
р    
Используемая библиотека strsafe.lib
Используемая DLL -
Заголовочный файл  
- объявлено в strsafe.h
- включено в -
Unicode Реализуются как версии Unicode и ANSI.
Замечания по платформе Не имеется

 

Назад в оглавление
На главную страницу
В оглавление справки

Hosted by uCoz