_cgets
, _cgetws
Ruft eine Zeichenfolge aus der Konsole ab. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter _cgets_s
, _cgetws_s
.
Wichtig
Diese Funktionen sind veraltet. Von Visual Studio 2015 an sind sie nicht in der CRT verfügbar. Dies sicheren Versionen dieser Funktionen, „_cgets_s“ und „_cgetws_s“, stehen noch zur Verfügung. Informationen zu diesen alternativen Funktionen finden Sie unter _cgets_s
, _cgetws_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 *_cgets(
char *buffer
);
wchar_t *_cgetws(
wchar_t *buffer
);
template <size_t size>
char *_cgets(
char (&buffer)[size]
); // C++ only
template <size_t size>
wchar_t *_cgetws(
wchar_t (&buffer)[size]
); // C++ only
Parameter
buffer
Speicherort für Daten.
Rückgabewert
_cgets
und _cgetws
geben bei buffer[2]
einen Zeiger auf den Anfang der Zeichenfolge zurück. Wenn buffer
ja NULL
, rufen diese Funktionen den ungültigen Parameterhandler auf, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, wird NULL
zurückgegeben und errno
auf EINVAL
festgelegt.
Hinweise
Diese Funktionen lesen eine Zeichenfolge von der Konsole und speichern die Zeichenfolge und ihre Länge im Speicherort, auf den buffer
zeigt. Der buffer
-Parameter muss ein Zeiger auf ein Zeichenarray sein. buffer[0]
, das erste Element des Arrays, muss die maximale Länge (in Zeichen) der zu lesenden Zeichenfolge enthalten. Das Array muss genügend Elemente enthalten, um die Zeichenfolge, ein endendes Nullzeichen ('\0') und 2 zusätzliche Bytes zu enthalten. Die Funktion liest die Zeichen bis zu einer Kombination aus Wagenrücklauf und Zeilenvorschub (CR-LF) oder bis die angegebene Anzahl von Zeichen gelesen ist. Die Zeichenfolge wird ab buffer[2]
gespeichert. Wenn die Funktion ein CR-LF liest, speichert sie das NULL-Zeichen ('\0'). Die Funktion speichert dann im zweiten Arrayelement buffer[1]
die tatsächliche Länge der Zeichenfolge.
Da alle Bearbeitungsschlüssel aktiv sind, wenn _cgets
oder _cgetws
in einem Konsolenfenster aufgerufen wird, wird durch Drücken der F3-TASTE der letzte eingegebene Eintrag wiederholt.
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 |
---|---|---|---|
_cgetts |
_cgets |
_cgets |
_cgetws |
Anforderungen
Routine | Erforderlicher Header |
---|---|
_cgets |
<conio.h> |
_cgetws |
<conio.h> oder <wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// crt_cgets.c
// compile with: /c /W3
// This program creates a buffer and initializes
// the first byte to the size of the buffer. Next, the
// program accepts an input string using _cgets and displays
// the size and text of that string.
#include <conio.h>
#include <stdio.h>
#include <errno.h>
int main( void )
{
char buffer[83] = { 80 }; // Maximum characters in 1st byte
char *result;
printf( "Input line of text, followed by carriage return:\n");
// Input a line of text:
result = _cgets( buffer ); // C4996
// Note: _cgets is deprecated; consider using _cgets_s
if (!result)
{
printf( "An error occurred reading from the console:"
" error code %d\n", errno);
}
else
{
printf( "\nLine length = %d\nText = %s\n",
buffer[1], result );
}
}
A line of input.Input line of text, followed by carriage return:
Line Length = 16
Text = A line of input.