gets
, _getws
Pobiera linię ze strumienia stdin
. Dostępne są bezpieczniejsze wersje tych funkcji; zobacz gets_s
, _getws_s
.
Ważne
Te funkcje są przestarzałe. Począwszy od programu Visual Studio 2015, nie są one dostępne w CRT. Bezpieczne wersje tych funkcji gets_s
i _getws_s
, są nadal dostępne. Aby uzyskać informacje na temat tych funkcji alternatywnych, zobacz gets_s
, _getws_s
.
Ważne
Tego interfejsu API nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.
Składnia
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
Parametry
buffer
Lokalizacja magazynu dla ciągu wejściowego.
Wartość zwracana
Zwraca argument w przypadku powodzenia. Wskaźnik NULL
wskazuje błąd lub warunek końca pliku. Użyj polecenia ferror
lub feof
, aby określić, który z nich wystąpił. Jeśli buffer
to NULL
, te funkcje wywołują nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonanie jest dozwolone do kontynuowania, te funkcje zwracają NULL
i ustawiają wartość errno
EINVAL
.
Uwagi
Funkcja gets
odczytuje wiersz ze standardowego strumienia stdin
wejściowego i przechowuje go w pliku buffer
. Wiersz składa się ze wszystkich znaków do i zawiera pierwszy znak nowego wiersza ('\n'). gets
następnie zastępuje znak nowego wiersza znakiem null ('\0') przed zwróceniem wiersza. fgets
Natomiast funkcja zachowuje znak nowego wiersza. _getws
jest wersją szerokoznakową gets
; jego argument i wartość zwracana są ciągami o szerokim znaku.
Ważne
Ponieważ nie ma możliwości ograniczenia liczby znaków odczytanych przez gets
element , niezaufane dane wejściowe mogą łatwo spowodować przepełnienie buforu. Użycie w zamian parametru fgets
.
W języku C++te funkcje mają przeciążenia szablonu, które wywołują nowsze, bezpieczne odpowiedniki tych funkcji. Aby uzyskać więcej informacji, zobacz Bezpieczne przeciążenia szablonów.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
Procedura TCHAR.H | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_getts |
gets |
gets |
_getws |
Wymagania
Procedura | Wymagany nagłówek |
---|---|
gets |
<stdio.h> |
_getws |
<stdio.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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 );
}
Wprowadzanie danych wejściowych dłuższych niż 20 znaków spowoduje zastąpienie buforu wiersza i prawie na pewno spowoduje awarię programu.
Hello there!The line entered was: Hello there!