Функция lstrcpy копирует строку в буфер. Чтобы скопировать заданное число символов, используйте функцию lstrcpyn.
LPTSTR lstrcpy( LPTSTR lpString1, LPTSTR lpString2 ); |
[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. | |
Замечания по платформе | Не имеется |