_cgets_s
, _cgetws_s
Pobiera ciąg znaków z konsoli programu . Te wersje i _cgets
_cgetws
mają ulepszenia zabezpieczeń, zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.
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
errno_t _cgets_s(
char *buffer,
size_t numberOfElements,
size_t *pSizeRead
);
errno_t _cgetws_s(
wchar_t *buffer
size_t numberOfElements,
size_t *pSizeRead
);
template <size_t size>
errno_t _cgets_s(
char (&buffer)[size],
size_t *pSizeRead
); // C++ only
template <size_t size>
errno_t _cgetws_s(
wchar_t (&buffer)[size],
size_t *pSizeRead
); // C++ only
Parametry
buffer
Lokalizacja przechowywania danych.
numberOfElements
Rozmiar buforu w postaci znaków jednobajtowych lub szerokich, który jest również maksymalną liczbą znaków do odczytania.
pSizeRead
Liczba znaków faktycznie odczytanych.
Wartość zwracana
Wartość zwracana jest zero, jeśli operacja się powiedzie; w przeciwnym razie kod błędu, jeśli wystąpi błąd.
Warunki błędu
buffer |
numberOfElements |
pSizeRead |
Powrót | Zawartość buffer |
---|---|---|---|---|
NULL |
dowolny | dowolny | EINVAL |
nie dotyczy |
nie NULL |
zero | dowolny | EINVAL |
niezmodyfikowane |
nie NULL |
dowolny | NULL |
EINVAL |
ciąg o zerowej długości |
Uwagi
_cgets_s
i _cgetws_s
odczytaj ciąg z konsoli i skopiuj ciąg (z terminatorem o wartości null) do buffer
. _cgetws_s
to szeroka wersja znaku funkcji; inne niż rozmiar znaku zachowanie tych dwóch funkcji jest identyczne. Maksymalny rozmiar ciągu do odczytu jest przekazywany jako numberOfElements
parametr . Ten rozmiar powinien zawierać dodatkowy znak dla wartości null zakończenia. Rzeczywista liczba odczytanych znaków jest umieszczana w pliku pSizeRead
.
Jeśli podczas operacji wystąpi błąd lub podczas walidacji parametrów, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, errno
jest ustawione na EINVAL
, i EINVAL
jest zwracany.
W języku C++użycie tych funkcji jest uproszczone przez przeciążenia szablonów. Przeciążenia mogą automatycznie wnioskować długość buforu, co eliminuje konieczność określenia argumentu rozmiaru. Mogą również automatycznie zastępować starsze, mniej bezpieczne funkcje nowszymi, bardziej bezpiecznymi odpowiednikami. Aby uzyskać więcej informacji, zobacz Bezpieczne przeciążenia szablonów.
Wersje biblioteki debugowania tych funkcji najpierw wypełniają bufor 0xFE. Aby wyłączyć to zachowanie, użyj polecenia _CrtSetDebugFillThreshold
.
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 |
---|---|---|---|
_cgetts_s |
_cgets_s |
_cgets_s |
_cgetws_s |
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_cgets_s |
<conio.h> |
_cgetws_s |
<conio.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.