gets_s
, _getws_s
Pobiera linię ze strumienia stdin
. Te wersje programu gets
_getws
mają ulepszenia zabezpieczeń zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.
Składnia
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
Parametry
buffer
Lokalizacja magazynu dla ciągu wejściowego.
sizeInCharacters
Rozmiar buforu.
Wartość zwracana
Zwraca wartość w przypadku powodzenia buffer
. 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ł.
Uwagi
Funkcja gets_s
odczytuje wiersz ze standardowego strumienia stdin
wejściowego i przechowuje go w pliku buffer
. Wiersz składa się z wszystkich znaków do i zawiera pierwszy znak nowego wiersza ('\n
'). gets_s
następnie zastępuje znak nowego wiersza znakiem null ('\0
') przed zwróceniem wiersza. fgets_s
Natomiast funkcja zachowuje znak nowego wiersza.
Jeśli pierwszy znak odczytu jest znakiem końca pliku, znak null jest przechowywany na początku buffer
znaku i NULL
jest zwracany.
_getws_s
jest wersją szerokoznakową gets_s
; jego argument i wartość zwracana są ciągami o szerokim znaku.
Jeśli buffer
wartość jest sizeInCharacters
NULL
mniejsza lub równa zero lub jeśli bufor jest za mały, aby zawierać wiersz wejściowy i terminator o wartości null, te funkcje wywołują nieprawidłową procedurę obsługi parametrów zgodnie z opisem w temacie Walidacja parametrów. Jeśli wykonanie jest dozwolone do kontynuowania, te funkcje zwracają NULL
i ustawiają wartość errno na ERANGE
.
W języku C++używanie tych funkcji jest uproszczone przez przeciążenia szablonu; przeciążenia mogą automatycznie wnioskować długość buforu (eliminując konieczność określenia argumentu rozmiaru) i mogą automatycznie zastępować starsze, niezabezpieczone funkcje nowszymi, bezpiecznymi odpowiednikami. 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
TCHAR.H rutyna |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_getts_s |
gets_s |
gets_s |
_getws_s |
Wymagania
Procedura | Wymagany nagłówek |
---|---|
gets_s |
<stdio.h> |
_getws_s |
<stdio.h> lub <wchar.h> |
Konsola nie jest obsługiwana w aplikacjach platformy platforma uniwersalna systemu Windows (UWP). Standardowe dojścia strumienia skojarzone z konsolą programu stdin
, stdout
i i stderr
muszą zostać przekierowane, zanim funkcje czasu wykonywania języka C będą mogły ich używać w aplikacjach platformy UWP. Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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!
Zobacz też
We/Wy strumienia
gets
, _getws
fgets
, fgetws
fputs
, fputws
puts
, _putws