Freigeben über


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_sweiterhin 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 getsZeichen 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!

Siehe auch

Stream-E/A
fgets, fgetws
fputs, fputws
puts, _putws