Функция lstrcpy


Функция lstrcpy копирует строку в буфер.  Чтобы скопировать заданное число символов, используйте функцию lstrcpyn.

Синтаксис

LPTSTR lstrcpy(      
 
    LPTSTR lpString1,
    LPTSTR lpString2
);

Параметры

lpString1

[out] Указатель на буфер, который получает содержимое строки, указанное при помощи параметра lpString2. Буфер должен быть достаточно большим, чтобы принять строку, включая символ завершающего нуля.

lpString2

[in] Указатель на строку с завершающим нулем, которая копируется.

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

Если функция завершается успешно, возвращаемое значение - указатель на буфер.

Если функция завершается ошибкой, возвращаемое значение NULL.

Замечания

Предупреждение защиты  Используя эту функцию неправильно, вы может поставить под угрозу обеспечение безопасности Вашего приложения.

Эта функция использует структурную обработку исключений (SEH), чтобы перехватить нарушения прав доступа и другие ошибки. Когда эта функция перехватывает ошибки структурной обработки исключений (SEH), она возвращает значение NULL, не завершая строку символом конца ('\0') и не уведомляя вызывающую программу об  ошибке. Вызывающая программа не защищена от того, чтобы допустить, что недостаточное место - это сбойная ситуация.

Первый параметр, lpString1, должен быть достаточно большим, чтобы вместить lpString2 и завершающий '\0', в противном случае может произойти переполнение буфера.

Переполнение буфера может привести к атаке типа "отказ в обслуживании" против приложения, если происходит нарушение прав доступа. В худшем случае, переполнение буфера может дать возможность взломщику защиты вставить исполняемый код в Ваш процесс, особенно если lpString1 - буфер, работающий со стеком.

Рассмотрите использование одной из нижеследующих альтернативных функций: StringCbCopy, StringCbCopyEx, StringCbCopyN, StringCbCopyNEx, StringCchCopy, StringCchCopyEx, StringCchCopyN или StringCchCopyNEx. Вы должны, перед продолжением, руководствоваться статьей Рассмотрение вопроса обеспечения безопасности: Пользовательский интерфейс Windows.

Рассмотрите использование вместо этой функцию StringCchCopy; используйте либо StringCchCopy (buffer, src, sizeof (buffer)/sizeof (buffer [0]);, знайте, что буфер не должен быть указателем или использовать функцию StringCchCopy (buffer, src, ARRAYSIZE (buffer);, знайте, что, копируя в указатель, вызывающая программа ответственна за передачу размера указателей в памяти, в символах.

Перед тем, как продолжить, просмотрите статью Соображение по безопасности: Пользовательский интерфейс Windows.

В версии системы с набором двухбайтовых символов (DBCS), эта функция может использоваться для копирования строки из двухбайтовых символов.

У функции lstrcpy - неопределенное поведение, если источник и целевые буфера накладываются.

Windows 95/98/Me:lstrcpyW поддерживается программой Microsoft Layer for Unicode (MSLU). Хотя версия W уже существует в Microsoft Windows 98/Me, она включается, чтобы обеспечить более непротиворечивое поведение во всех операционных системах Windows. Чтобы использовать ее, Вы должны добавить некоторые файлы к вашему приложению, как изложено в описании Microsoft Layer for Unicode для системы Windows 95/98/Me.

Пример

Пример смотри в статье Изменение переменных окружения.

Смотри также

Обзор Строки, Функции, используемые строками, StringCbCopy, StringCbCopyEx, StringCbCopyN, StringCbCopyNEx, StringCchCopy, StringCchCopyEx, StringCchCopyN, StringCchCopyNEx, lstrcat, lstrcmp, lstrcmpi, lstrlen

Размещение и совместимость lstrcpy

К 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
в
е
р
Используемая библиотека Kernel32.lib
Используемая DLL kernel32.dll
Заголовочный файл
- объявлено в Winbase.h
- включено в Windows.h
Unicode Реализуются как версии Unicode и ANSI.
Замечания по платформе Не имеется

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

Hosted by uCoz