Freigeben über


lstrcpyA-Funktion (winbase.h)

Kopiert eine Zeichenfolge in einen Puffer.

Warnung Nicht verwenden. Verwenden Sie stattdessen StringCchCopy-. Siehe Anmerkungen.
 

Syntax

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

Parameter

[out] lpString1

Typ: LPTSTR-

Ein Puffer, der den Inhalt der Zeichenfolge empfängt, auf die der lpString2 Parameter verweist. Der Puffer muss groß genug sein, um die Zeichenfolge zu enthalten, einschließlich des endenden Nullzeichens.

[in] lpString2

Typ: LPTSTR-

Die mit Null beendete Zeichenfolge, die kopiert werden soll.

Rückgabewert

Typ: LPTSTR-

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Zeiger auf den Puffer.

Wenn die Funktion fehlschlägt, ist der Rückgabewert NULL- und lpString1- möglicherweise nicht null beendet.

Bemerkungen

Mit einer DBCS-Version (Double-Byte Character Set) des Systems kann diese Funktion verwendet werden, um eine DBCS-Zeichenfolge zu kopieren.

Die lstrcpy--Funktion weist ein nicht definiertes Verhalten auf, wenn Quell- und Zielpuffer überlappen.

Sicherheitsmerkungen

Die Verwendung dieser Funktion kann die Sicherheit Ihrer Anwendung fälschlicherweise beeinträchtigen. Diese Funktion verwendet die strukturierte Ausnahmebehandlung (SEH), um Zugriffsverletzungen und andere Fehler abzufangen. Wenn diese Funktion SEH-Fehler abfangen, gibt sie NULL- zurück, ohne die Zeichenfolge zu beenden und ohne den Aufrufer des Fehlers zu benachrichtigen. Der Aufrufer kann nicht davon ausgehen, dass nicht genügend Speicherplatz die Fehlerbedingung ist.

lpString1- muss groß genug sein, um lpString2- und das schließende "\0" zu halten, andernfalls kann ein Pufferüberlauf auftreten.

Pufferüberlaufsituationen sind die Ursache vieler Sicherheitsprobleme in Anwendungen und können einen Denial-of-Service-Angriff auf die Anwendung verursachen, wenn eine Zugriffsverletzung auftritt. Im schlimmsten Fall kann ein Pufferüberlauf es einem Angreifer ermöglichen, ausführbaren Code in Ihren Prozess einzufügen, insbesondere, wenn lpString1- ein stapelbasierter Puffer ist.

Erwägen Sie stattdessen die Verwendung StringCchCopy-; verwenden Sie entweder StringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);, wobei sie sich bewusst ist, dass buffer kein Zeiger sein darf oder StringCchCopy(buffer, ARRAYSIZE(buffer), src);verwenden. Beachten Sie, dass der Aufrufer beim Kopieren in einen Zeiger dafür verantwortlich ist, die Größe des zeigerfähigen Speichers in Zeichen zu übergeben.

Anmerkung

Der winbase.h-Header definiert lstrcpy als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- winbase.h (enthalten Windows.h)
Library Kernel32.lib
DLL- Kernel32.dll

Siehe auch

Konzeptionelle

Referenz-

StringCbCopy-

StringCbCopyEx-

StringCbCopyN-

StringCbCopyNEx-

StringCchCopy-

StringCchCopyEx-

StringCchCopyN-

StringCchCopyNEx-

Zeichenfolgen

lstrcmp-

lstrcmpi

lstrlen