gets_s
, _getws_s
Ruft eine Zeile aus dem stdin
-Stream ab. Diese Versionen von gets
, _getws
verfügen über Sicherheitsverbesserungen, wie in sicherheitsfeatures im CRT beschrieben.
Syntax
char *gets_s(
char *buffer,
size_t sizeInCharacters
);
wchar_t *_getws_s(
wchar_t *buffer,
size_t sizeInCharacters
);
template <size_t size>
char *gets_s( char (&buffer)[size] ); // C++ only
template <size_t size>
wchar_t *_getws_s( wchar_t (&buffer)[size] ); // C++ only
Parameter
buffer
Speicherort für die Eingabezeichenfolge.
sizeInCharacters
Die Größe des Puffers.
Rückgabewert
Gibt bei Erfolg buffer
zurück. Ein NULL
-Zeiger weist auf einen Fehler oder eine Dateiendebedingung hin. Verwenden ferror
oder feof
bestimmen Sie, welche Person aufgetreten ist.
Hinweise
Die gets_s
-Funktion liest eine Zeile aus dem Standardeingabestream stdin
und speichert sie in buffer
. Die Zeile besteht aus allen Zeichen bis zum ersten Zeilenumbruchzeichen ('\n
'). gets_s
ersetzt dann das Zeilenumbruchzeichen durch ein Nullzeichen ('\0
'), bevor die Zeile zurückgegeben wird. Im Gegensatz dazu behält die fgets_s
-Funktion das Zeilenumbruchzeichen bei.
Wenn das erste Zeichen das Ende des Dateizeichens ist, wird am Anfang des buffer
Zeichens ein NULL-Zeichen gespeichert und NULL
zurückgegeben.
_getws_s
ist eine Breitzeichenversion von gets_s
. Das Argument und der Rückgabewert sind Breitzeichen-Zeichenfolgen.
Wenn buffer
der Wert kleiner oder gleich Null ist NULL
oder sizeInCharacters
kleiner als oder gleich Null ist oder der Puffer zu klein ist, um die Eingabezeile und den Null-Endator zu enthalten, 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 setzen "errno" auf ERANGE
.
In C++ wird die Verwendung dieser Funktionen durch Vorlagenüberladungen vereinfacht; die Überladungen können automatisch Rückschlüsse auf die Pufferlänge ziehen (wodurch kein Größenargument mehr angegeben werden muss), und sie können automatisch die älteren, nicht sicheren Funktionen durch ihre neueren, sicheren Entsprechungen ersetzen. 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_s |
gets_s |
gets_s |
_getws_s |
Anforderungen
Routine | Erforderlicher Header |
---|---|
gets_s |
<stdio.h> |
_getws_s |
<stdio.h> oder <wchar.h> |
Die Konsole wird in UWP-Apps (Universelle Windows-Plattform) nicht unterstützt. Die mit der Konsole verknüpften Standardstreamhandles stdin
, stdout
und stderr
müssen umgeleitet werden, bevor sie von C-Laufzeitfunktionen in UWP-Apps verwendet werden können. Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// crt_gets_s.c
// This program retrieves a string from the stdin and
// prints the same string to the console.
#include <stdio.h>
int main( void )
{
char line[21]; // room for 20 chars + '\0'
gets_s( line, 20 );
printf( "The line entered was: %s\n", line );
}
Hello there!
The line entered was: Hello there!
Siehe auch
Stream-E/A
gets
, _getws
fgets
, fgetws
fputs
, fputws
puts
, _putws