Compartilhar via


Função lstrcpyA (winbase.h)

Copia uma cadeia de caracteres para um buffer.

Aviso Não use. Em vez disso, considere usar StringCchCopy . Consulte Observações.
 

Sintaxe

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

Parâmetros

[out] lpString1

Tipo: LPTSTR

Um buffer para receber o conteúdo da cadeia de caracteres apontada pelo parâmetro lpString2 . O buffer deve ser grande o suficiente para conter a cadeia de caracteres, incluindo o caractere nulo de terminação.

[in] lpString2

Tipo: LPTSTR

A cadeia de caracteres terminada em nulo a ser copiada.

Valor retornado

Tipo: LPTSTR

Se a função for bem-sucedida, o valor retornado será um ponteiro para o buffer.

Se a função falhar, o valor retornado será NULL e lpString1 poderá não ser encerrado em nulo.

Comentários

Com uma versão DBCS (conjunto de caracteres de byte duplo) do sistema, essa função pode ser usada para copiar uma cadeia de caracteres DBCS.

A função lstrcpy terá um comportamento indefinido se os buffers de origem e destino se sobrepõem.

Comentários de segurança

Usar essa função incorretamente pode comprometer a segurança do aplicativo. Essa função usa o SEH (tratamento de exceção estruturado) para capturar violações de acesso e outros erros. Quando essa função captura erros SEH, ela retorna NULL sem encerrar nulo a cadeia de caracteres e sem notificar o chamador do erro. O chamador não é seguro para assumir que espaço insuficiente é a condição de erro.

lpString1 deve ser grande o suficiente para manter lpString2 e o fechamento '\0', caso contrário, um estouro de buffer pode ocorrer.

As situações de estouro de buffer são a causa de muitos problemas de segurança em aplicativos e podem causar um ataque de negação de serviço contra o aplicativo se ocorrer uma violação de acesso. Na pior das hipóteses, uma sobrecarga de buffer pode permitir que um invasor injete código executável em seu processo, especialmente se lpString1 for um buffer baseado em pilha.

Em vez disso, considere usar StringCchCopy ; StringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);use , tendo em mente que buffer não deve ser um ponteiro ou usar StringCchCopy(buffer, ARRAYSIZE(buffer), src);, estando ciente de que, ao copiar para um ponteiro, o chamador é responsável por passar o tamanho da memória apontada em caracteres.

Observação

O cabeçalho winbase.h define lstrcpy como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winbase.h (inclua Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

Conceitual

Referência

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

Cadeias de caracteres

lstrcmp

lstrcmpi

lstrlen