_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l
Считывает форматированные данные с консоли. В этих более безопасных версиях _cscanf, _cscanf_l, _cwscanf, _cwscanf_l усовершенствована безопасность, как описано в разделе Функции безопасности в CRT.
Важно!
Этот API невозможно использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в статье Функции CRT, которые не поддерживаются с ключом /ZW.
int _cscanf_s(
const char *format [,
argument] ...
);
int _cscanf_s_l(
const char *format,
locale_t locale [,
argument] ...
);
int _cwscanf_s(
const wchar_t *format [,
argument] ...
);
int _cwscanf_s_l(
const wchar_t *format,
locale_t locale [,
argument] ...
);
Параметры
format
Строка управления форматом.argument
Необязательные параметры.locale
Используемый языковой стандарт.
Возвращаемое значение
Количество полей, которые были успешно преобразованы и присвоены. Возвращаемое значение не включает поля, которые были считаны, но не были присвоены. Возвращаемое значение EOF при попытке чтения в конце файла. Это может произойти, если данные, вводимые с клавиатуры, перенаправляются на уровне командной строки операционной системы. Возвращаемое значение 0 означает, что поля не были присвоены.
Эти функции проверяют свои параметры. Если format является указателем null, то эти функции вызывают обработчик недопустимого параметра, как описано в Проверка параметров. Если продолжение выполнения разрешено, эти функции возвращают EOF и errnoприсваивается значение EINVAL.
Заметки
Функция _cscanf_s считывает данные непосредственно из консоли в места, определяемые argument. Функция _getche используется для чтения символов. Каждый необязательный параметр в списке должен быть указателем на переменную, которая имеет тип, соответствующий спецификатору типа в format. Аргумент format управляет интерпретацией полей ввода и имеет те же форму и функциональные возможности, что и аргумент format функции scanf_s. Обычно _cscanf_s выводит вводимый символ, но этого не происходит, если последним вызовом был _ungetch.
Как и другие безопасные версии функций в семействеscanf ,_cscanf_s и _cswscanf_s требуют аргументов размера для символов поля типа c, C, s, S и [. Для получения дополнительной информации см. Спецификация ширины scanf.
Примечание
Параметр размера — типа unsigned, а не size_t.
Версии этих функций с суффиксом _l идентичны за исключением того, что они используют переданный параметр языкового стандарта вместо языкового стандарта текущего потока.
Универсальное текстовое сопоставление функций
Подпрограмма TCHAR.H |
_UNICODE и _MBCS не определены |
_MBCS определено |
_UNICODE определено |
---|---|---|---|
_tcscanf_s |
_cscanf_s |
_cscanf_s |
_cwscanf_s |
_tcscanf_s_l |
_cscanf_s_l |
_cscanf_s_l |
_cwscanf_s_l |
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
_cscanf_s,_cscanf_s_l |
<conio.h> |
_cwscanf_s, _cwscanf_s_l |
<conio.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Библиотеки
Все версии библиотек времени выполнения C.
Пример
// crt_cscanf_s.c
// compile with: /c
/* This program prompts for a string
* and uses _cscanf_s to read in the response.
* Then _cscanf_s returns the number of items
* matched, and the program displays that number.
*/
#include <stdio.h>
#include <conio.h>
int main( void )
{
int result, n[3];
int i;
result = _cscanf_s( "%i %i %i", &n[0], &n[1], &n[2] );
_cprintf_s( "\r\nYou entered " );
for( i=0; i<result; i++ )
_cprintf_s( "%i ", n[i] );
_cprintf_s( "\r\n" );
}
Ввод
1 2 3
Output
You entered 1 2 3
См. также
Ссылки
_cprintf, _cprintf_l, _cwprintf, _cwprintf_l
fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l