gets_s, _getws_s

Pobiera linię ze strumienia stdin . Te wersje programu gets_getwsmają 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 bufferznaku 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 sizeInCharactersNULL 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 Rutynowych _UNICODE i _MBCS niezdefiniowane _MBCS Zdefiniowane _UNICODE Zdefiniowane
_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, stdouti i stderrmuszą 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