lstrcpyA, fonction (winbase.h)
Copie une chaîne dans une mémoire tampon.
Syntaxe
LPSTR lstrcpyA(
[out] LPSTR lpString1,
[in] LPCSTR lpString2
);
Paramètres
[out] lpString1
Type : LPTSTR
Mémoire tampon pour recevoir le contenu de la chaîne pointée par le paramètre lpString2. La mémoire tampon doit être suffisamment grande pour contenir la chaîne, y compris le caractère null de fin.
[in] lpString2
Type : LPTSTR
Chaîne terminée par null à copier.
Valeur de retour
Type : LPTSTR
Si la fonction réussit, la valeur de retour est un pointeur vers la mémoire tampon.
Si la fonction échoue, la valeur de retour est NULL et lpString1 peut ne pas être terminée par null.
Remarques
Avec une version de jeu de caractères double octet (DBCS) du système, cette fonction peut être utilisée pour copier une chaîne DBCS.
La fonction lstrcpy a un comportement non défini si les mémoires tampons source et de destination se chevauchent.
Remarques sur la sécurité
L’utilisation incorrecte de cette fonction peut compromettre la sécurité de votre application. Cette fonction utilise la gestion structurée des exceptions (SEH) pour intercepter les violations d’accès et d’autres erreurs. Lorsque cette fonction intercepte les erreurs SEH, elle retourne NULL sans mettre fin à la chaîne et sans notifier l’appelant de l’erreur. L’appelant n’est pas sûr de supposer que l’espace insuffisant est la condition d’erreur.lpString1 doit être suffisamment grand pour contenir lpString2 et la fermeture '\0', sinon un dépassement de mémoire tampon peut se produire.
Les situations de dépassement de mémoire tampon sont la cause de nombreux problèmes de sécurité dans les applications et peuvent provoquer une attaque par déni de service contre l’application si une violation d’accès se produit. Dans le pire des cas, un dépassement de mémoire tampon peut permettre à un attaquant d’injecter du code exécutable dans votre processus, en particulier si lpString1 est une mémoire tampon basée sur la pile.
Envisagez d’utiliser StringCchCopy à la place ; utilisez StringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);
, sachant que buffer
ne doit pas être un pointeur ou utiliser StringCchCopy(buffer, ARRAYSIZE(buffer), src);
, sachant que, lors de la copie vers un pointeur, l’appelant est responsable du passage de la taille de la mémoire pointée dans les caractères.
Note
L’en-tête winbase.h définit lstrcpy en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
serveur minimum pris en charge | Windows 2000 Server [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | winbase.h (inclure Windows.h) |
bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |
Voir aussi
conceptuelle
de référence