Compartir a través de


Función lstrcpyA (winbase.h)

Copia una cadena en un búfer.

Advertencia No usar. Considere la posibilidad de usar StringCchCopy en su lugar. Vea comentarios.
 

Sintaxis

LPSTR lstrcpyA(
  [out] LPSTR  lpString1,
  [in]  LPCSTR lpString2
);

Parámetros

[out] lpString1

Tipo: LPTSTR de

Búfer para recibir el contenido de la cadena a la que apunta el parámetro lpString2. El búfer debe ser lo suficientemente grande como para contener la cadena, incluido el carácter nulo de terminación.

[in] lpString2

Tipo: LPTSTR de

Cadena terminada en NULL que se va a copiar.

Valor devuelto

Tipo: LPTSTR de

Si la función se ejecuta correctamente, el valor devuelto es un puntero al búfer.

Si se produce un error en la función, el valor devuelto es NULL y es posible que lpString1 no finalicen en null.

Observaciones

Con una versión de juego de caracteres de doble byte (DBCS) del sistema, esta función se puede usar para copiar una cadena DBCS.

La función lstrcpy tiene un comportamiento indefinido si los búferes de origen y destino se superponen.

Comentarios de seguridad de

El uso incorrecto de esta función puede poner en peligro la seguridad de la aplicación. Esta función usa el control de excepciones estructurado (SEH) para detectar infracciones de acceso y otros errores. Cuando esta función detecta errores de SEH, devuelve NULL sin terminar la cadena y sin notificar al autor de la llamada el error. El autor de la llamada no es seguro suponer que el espacio insuficiente es la condición de error.

lpString1 debe ser lo suficientemente grande como para contener lpString2 y el cierre "\0", de lo contrario, puede producirse una saturación del búfer.

Las situaciones de desbordamiento del búfer son la causa de muchos problemas de seguridad en las aplicaciones y pueden provocar un ataque por denegación de servicio contra la aplicación si se produce una infracción de acceso. En el peor de los casos, una saturación de búfer puede permitir que un atacante inserte código ejecutable en el proceso, especialmente si lpString1 es un búfer basado en pila.

Considere la posibilidad de usar StringCchCopy en su lugar; use StringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);, teniendo en cuenta que buffer no debe ser un puntero ni usar StringCchCopy(buffer, ARRAYSIZE(buffer), src);, teniendo en cuenta que, al copiar en un puntero, el autor de la llamada es responsable de pasar el tamaño de la memoria apuntada en caracteres.

Nota

El encabezado winbase.h define lstrcpy como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winbase.h (incluya Windows.h)
biblioteca de Kernel32.lib
DLL de Kernel32.dll

Consulte también

conceptual de

de referencia de

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCchCopy

StringCchCopyEx

stringCchCopyN de

StringCchCopyNEx

cadenas de

lstrcmp

lstrcmpi

lstrlen