Функция StringCchCopy


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

Синтаксис

HRESULT StringCchCopy(      

    LPTSTR pszDest,
    size_t cchDest,
    LPCTSTR pszSrc
);

Параметры

pszDest

[out] Указатель на буфер, который получает скопированную строку.

cchDest

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

pszSrc

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

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

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


 

Значение

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

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

Замечания

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

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

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

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

Функция

char "string" StringCchCopyA
TCHAR TEXT("string") StringCchCopy
WCHAR L"string" StringCchCopyW

Функция StringCchCopy и её варианты ANSI и Unicode заменяют эти функции:

Эта функция не заменяет функцию strncpy из-за различий в поведении, и ошибок, которыми может закончиться её работа, если Вы пытаетесь сделать эту замену. Пожалуйста используйте StringCchCopyN или StringCchCopyNEx, чтобы заменить функцию strncpy.

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

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

Смотри также

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

 
Размещение и совместимость StringCchCopy
К 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