gets
, _getws
Ruft eine Zeile aus dem stdin
-Stream ab. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter gets_s
, _getws_s
.
Wichtig
Diese Funktionen sind veraltet. Von Visual Studio 2015 an sind sie nicht in der CRT verfügbar. Die sicheren Versionen dieser Funktionen gets_s
sind _getws_s
weiterhin verfügbar. Informationen zu diesen alternativen Funktionen finden Sie unter gets_s
, _getws_s
.
Wichtig
Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).
Syntax
char *gets(
char *buffer
);
wchar_t *_getws(
wchar_t *buffer
);
template <size_t size>
char *gets(
char (&buffer)[size]
); // C++ only
template <size_t size>
wchar_t *_getws(
wchar_t (&buffer)[size]
); // C++ only
Parameter
buffer
Speicherort für die Eingabezeichenfolge.
Rückgabewert
Gibt bei Erfolg das Argument zurück. Ein NULL
-Zeiger weist auf einen Fehler oder eine Dateiendebedingung hin. Verwenden ferror
oder feof
bestimmen Sie, welche Person aufgetreten ist. Wenn buffer
ja NULL
, rufen diese Funktionen einen ungültigen Parameterhandler auf, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen NULL
zurück und stellen errno
auf EINVAL
ein.
Hinweise
Die gets
-Funktion liest eine Zeile aus dem Standardeingabestream stdin
und speichert sie in buffer
. Die Zeile enthält alle Zeichen einschließlich des ersten Zeilenumbruchzeichens ('\n'). gets
ersetzt dann das Zeilenumbruchzeichen durch ein NULL-Zeichen ('\0'), ehe die Zeile zurückgegeben wird. Im Gegensatz dazu behält die fgets
-Funktion das Zeilenumbruchzeichen bei. _getws
ist eine Breitzeichenversion von gets
. Das Argument und der Rückgabewert sind Breitzeichen-Zeichenfolgen.
Wichtig
Da es keine Möglichkeit gibt, die Anzahl der von ihnen gelesenen gets
Zeichen einzuschränken, kann dies zu Pufferüberläufen führen. Verwenden Sie stattdessen fgets
.
In C++ haben diese Funktionen Vorlagenüberladungen, mit denen die neueren, sicheren Entsprechungen dieser Funktionen aufgerufen werden. Weitere Informationen finden Sie unter Secure Template Overloads.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
TCHAR.H-Routine | _UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_getts |
gets |
gets |
_getws |
Anforderungen
Routine | Erforderlicher Header |
---|---|
gets |
<stdio.h> |
_getws |
<stdio.h> oder <wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// crt_gets.c
// compile with: /WX /W3
#include <stdio.h>
int main( void )
{
char line[21]; // room for 20 chars + '\0'
gets( line ); // C4996
// Danger: No way to limit input to 20 chars.
// Consider using gets_s instead.
printf( "The line entered was: %s\n", line );
}
Die Eingabe, die länger als 20 Zeichen ist, überschreitet den Zeilenpuffer und führt fast sicher dazu, dass das Programm abstürzt.
Hello there!The line entered was: Hello there!