Поделиться через


_cscanf_s, , _cscanf_s_l_cwscanf_s_cwscanf_s_l

Считывает форматированные данные из консоли. Эти более безопасные версии , _cwscanf_l_cscanf_l_cwscanf имеют улучшения безопасности, как описано в функциях _cscanfбезопасности в CRT.

Внимание

Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.

Синтаксис

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. Можно EOF также вернуть, когда ввод клавиатуры перенаправляется на уровне командной строки операционной системы. Возвращаемое значение равно нулю означает, что поля не были назначены.

Эти функции проверяют свои параметры. Если format это пустой указатель, эти функции вызывают обработчик недопустимых параметров, как описано в разделе проверки параметров. Если выполнение разрешено продолжать, эти функции возвращаются EOFи errno задаются EINVALв качестве значения .

Замечания

Функция _cscanf_s считывает данные из консоли в места, указанные функцией argument. Функция _getche используется для чтения символов. Каждый дополнительный параметр должен быть указателем на переменную, тип которой соответствует спецификатору типа в параметре format. Формат управляет интерпретацией входных полей и имеет ту же форму и функцию, что format и параметр функции для scanf_s функции. Хотя _cscanf_s обычно эхо входной символ, он не делает это, если последний вызов был._ungetch

Как и другие безопасные версии функций в семействеscanf, _cscanf_s и _cwscanf_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
You entered 1 2 3

См. также

Консоль и порт ввода-вывода
_cprintf, , _cprintf_l_cwprintf_cwprintf_l
fscanf_s, , _fscanf_s_lfwscanf_s_fwscanf_s_l
scanf_s, , _scanf_s_lwscanf_s_wscanf_s_l
sscanf_s, , _sscanf_s_lswscanf_s_swscanf_s_l