символы поля типа scanf
Следующее применяется к любому scanf семейство функций, в том числе безопасные версии, например scanf_s.
type символ единственное требуемое поле формата; он указывается после того, как все необязательные поля формата.type символ, указывающее, является ли связанный аргумент, интерпретируется как символ, строки или числа.
Символы типа для функций scanf
Знак |
Ожидаемый тип ввода |
Тип аргумента |
Аргумент size в безопасной версией? |
---|---|---|---|
c |
Символ.При использовании с scanf функции, символ единый-байта; при использовании с wscanf функции, определяющие расширенный символ.Пробелы, обычно пропущены при чтении c указывает.Чтобы прочитать следующий символ, используйте единый-байта non-бел-космической %1s; , если считывается следующий символ, используйте расширенный non-бел-космической %1ws. |
Указатель на char при использовании с scanf указатель на функцию wchar_t при использовании с wscanf функции. |
Обязательный.Размер не включает пространство для признака конца null. |
C |
Противоположный знак размера.При использовании с scanf функции, определяющие расширенный символ. при использовании с wscanf функции, символ единый-байта.Пробелы, обычно пропущены при чтении C указывает.Чтобы прочитать следующий символ, используйте единый-байта non-бел-космической %1s; , если считывается следующий символ, используйте расширенный non-бел-космической %1ws. |
Указатель на wchar_t при использовании с scanf указатель на функцию char при использовании с wscanf функции. |
Обязательный.Аргумент size не содержит пространство для признака конца null. |
d |
Десятичное целое число. |
Указатель на int. |
Нет. |
i |
Параметр типа Integer (целое число).Hex если входная строка начинается с "0x" или "0X", то восьмиштырьково если строка начинается с "0"; в противном случае десятичное число. |
Указатель на int. |
Нет. |
o |
Восьмеричное целое число. |
Указатель на int. |
Нет. |
u |
Десятичное целое число без знака. |
Указатель на unsignedint. |
Нет. |
x |
Шестнадцатеричное целое число. |
Указатель на int. |
Нет. |
e, E, f, g, G |
Значение с плавающей запятой, состоящий из необязательного знака (плюс или минус), ряда один или несколько десятичных разрядов, содержащие десятичную запятую и необязательную степени ("e" или "e") и, при необходимости, значение знакового целого числа. |
Указатель на float. |
Нет. |
n |
Без ввода для чтения из потока или буфера. |
Указатель на int, в который успешно, хранящихся количество символов, считанных из потока или буфера до точки в текущем вызове scanf функции или wscanf функции. |
Нет. |
s |
Строка, до первого пробелов (пробелы, символы табуляции или перевода строки).Для считывания строки, разделенные пробелами, не используйте набора квадратных скобк ([ ]), как описано в разделе coding the script спецификация ширины scanf. |
При использовании с scanf функции, обозначают массив символов единый-байта; при использовании с wscanf функции, обозначают массив расширенных символов.В любом случае массив символов, должен быть достаточным для завершения для поля ввода и нуль-символ, который автоматически добавляется. |
Обязательный.Размер включает пространство для признака конца null. |
S |
Символьная строка Противоположн-изменить размера до первого пробелов (пробелы, символы табуляции или перевода строки).Для считывания строки, разделенные пробелами, не используйте набора квадратных скобк ([ ]), как описано в разделе coding the script спецификация ширины scanf. |
При использовании с scanfфункции, обозначают массив расширенных символов; при использовании с wscanfфункции, обозначают массив единый-байт-знака.В любом случае массив символов, должен быть достаточным для завершения для поля ввода и нуль-символ, который автоматически добавляется. |
Обязательный.Размер включает пространство для признака конца null. |
a и A описатели (см. символы поля типа printfнедоступны с) scanf.
Аргументы размера, если это требуется, должны быть переданы в списке параметров сразу после аргумента, они применяются.Например, следующий код:
char string1[11], string2[9];
scanf("%10s %8s", string1, 11, string2, 9);
считывает строку с максимальной длиной в 10 string1и строки с максимальной длиной 8 string2.Размер буфера должен быть хотя бы один больше, чем спецификации ширины поскольку пробел должна быть зарезервирована для признака конца null.
Строка форматирования может обрабатывать единый-байт или расширенный символ вход независимо от того, являются ли используемая версия символа или расширенных символов единый-байта функции.Таким образом, чтение единый-байт или расширенных символов с scanf функции и wscanf функции, настраиваемые описатели формата использования следующим образом.
Чтения символ как |
Используйте эту функцию |
с этими описателями формата |
---|---|---|
один байт |
Функции scanf |
c, hc или hC |
один байт |
Функции wscanf |
C, hc или hC |
широко |
Функции wscanf |
c, lc или lC |
широко |
Функции scanf |
C, lc или lC |
Просматривать строки с scanf функции и wscanf функции, использующие выше таблицу с тип-описателями формата s и S вместо c и C.