Condividi tramite


Funzione lstrcpyA (winbase.h)

Copia una stringa in un buffer.

Avviso Non usare. Prendere invece in considerazione l'uso di StringCchCopy . Vedere la sezione Osservazioni.
 

Sintassi

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

Parametri

[out] lpString1

Tipo: LPTSTR

Buffer a cui ricevere il contenuto della stringa a cui punta il parametro lpString2 . Il buffer deve essere sufficientemente grande da contenere la stringa, incluso il carattere null di terminazione.

[in] lpString2

Tipo: LPTSTR

Stringa con terminazione Null da copiare.

Valore restituito

Tipo: LPTSTR

Se la funzione ha esito positivo, il valore restituito è un puntatore al buffer.

Se la funzione ha esito negativo, il valore restituito è NULL e lpString1 potrebbe non essere con terminazione Null.

Commenti

Con una versione DBCS (Double-Byte Character Set) del sistema, questa funzione può essere usata per copiare una stringa DBCS.

La funzione lstrcpy ha un comportamento non definito se i buffer di origine e di destinazione si sovrappongono.

Osservazioni sulla sicurezza

L'uso di questa funzione in modo non corretto può compromettere la sicurezza dell'applicazione. Questa funzione usa la gestione delle eccezioni strutturata (SEH) per rilevare le violazioni di accesso e altri errori. Quando questa funzione rileva errori SEH, restituisce NULL senza terminazione null della stringa e senza notificare al chiamante l'errore. Il chiamante non è sicuro presupporre che lo spazio insufficiente sia la condizione di errore.

lpString1 deve essere sufficientemente grande da contenere lpString2 e la chiusura di '\0'. In caso contrario, potrebbe verificarsi un sovraccarico del buffer.

Le situazioni di overflow del buffer sono la causa di molti problemi di sicurezza nelle applicazioni e possono causare un attacco Denial of Service all'applicazione se si verifica una violazione di accesso. Nel peggiore dei casi, un sovraccarico del buffer può consentire a un utente malintenzionato di inserire codice eseguibile nel processo, soprattutto se lpString1 è un buffer basato su stack.

Prendere invece in considerazione l'uso di StringCchCopy ; StringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);usare , sapendo che buffer non deve essere un puntatore o usare StringCchCopy(buffer, ARRAYSIZE(buffer), src);, tenere presente che, durante la copia in un puntatore, il chiamante è responsabile del passaggio delle dimensioni della memoria a punta nei caratteri.

Nota

L'intestazione winbase.h definisce lstrcpy come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Informazioni concettuali

Riferimento

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

Stringhe

lstrcmp

lstrcmpi

lstrlen