Функция 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. | |
Замечания по платформе | Не имеется |