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


_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

scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l

sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l