Форматный ввод-вывод (Мини-учебник с ejudge = Чернокнижка), страница 3
Описание файла
Файл "Форматный ввод-вывод" внутри архива находится в папке "Мини-учебник с ejudge = Чернокнижка". PDF-файл из архива "Мини-учебник с ejudge = Чернокнижка", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 3 страницы из PDF
Это преобразование не пропускает ведущие пробельные символы. Шаблону преобразования соответствует любая последовательность из w символов.Символ-признак завершения строки ’\0’ после считанных символов не добавляется.Вызов функцииСохранённое значениеsscanf("129E-2", "%c", &c)’1’sscanf("129E-2", "%2c", &c)’1’, ’2’Спецификаторы %d, %i, %o, %u, %x, %X. Эти спецификаторы используются для преобразования входных символов в знаковое или беззнаковое целое число и сохранения его вобъекте целого типа.
Перед преобразованием пропускаются пробельные символы.Вызов функцииСохранённое значениеsscanf("129E-2", "%o%d%x", &i, &j, &k)10, 9, 14Спецификаторы %e, %E, %f, %g, %G. Эти спецификаторы используются для преобразования входных символов в знаковое вещественное число, состоящее из целой части, дробнойчасти (возможно пустой) и необязательной экспоненциальной части. Результат помещаетсяв объект одного из типов с плавающей точкой. Перед преобразованием пропускаются пробельные символы.Вызов функцииСохранённое значениеsscanf("129E-2", "%e", &f)1.29Спецификатор %n. Спецификатор используется для сохранения количества прочитанных на текущий момент символов в целочисленном объекте.
Спецификатор не пропускает пробельные символы и не считывает входные символы. Он не учитывается в количествеуспешно считанных полей, возвращаемом функциями сканирования.Вызов функцииСохранённое значениеsscanf("129E-2", "12%n", &i)2Спецификатор %p. Спецификатор используется для преобразования входных символовво внутреннее представление безтипового указателя (void*). Входные символы должны соответствовать формату спецификатора %p функций форматного вывода.
Перед преобразованием пропускаются все ведущие пробельные символы.Вызов функцииСохранённое значениеsscanf("129E-2", "%p", &p)0x129e (пример)Спецификатор %s. Спецификатор используется для сохранения символов входного потока в массиве символов с добавлением за считанными символами признака завершениястроки ’\0’. Если ширина поля w не задана явно, по умолчанию полагается, что w велико. Перед чтением пропускаются пробельные символы. Считывается любая последовательность не более чем из w непробельных символов.Вызов функцииСохранённое значениеsscanf("129E-2", "%s", &s[0])"129E-2"sscanf("129E-2", "%3s", &s[0])"129"Спецификатор множества сканирования %[...]. Спецификатор используется длясохранения символов, удовлетворяющих шаблону, в массиве элементов типа char с добавлением после считанных символов признака завершения строки ’\0’.
Перед чтением символов не пропускаются пробельные символы. Если ширина поля ввода w не задана явно,по умолчанию предполагается, что w велико. Последовательность не более чем из w символов удовлетворяет шаблону, если выполняются следующие правила. После открывающейскобки [ записывается последовательность из нуля или более символов множества сканирования, завершающаяся закрывающей скобкой ].Если сразу же после [ не записан символ «крышки» (^), тогда каждый вводимый символдолжен соответствовать одному из символов множества сканирования. В противном слу10чае каждый вводимый символ не должен соответствовать ни одному из символов множествасканирования, следующих после символа ^. Если символ ] записан сразу же после [ или^, тогда этот символ ] — один из символов множества сканирования, не символ, завершающий спецификатор множества сканирования.
Символ «минус», записанный не первым ине последним символом во множестве определяет диапазон символов сканирования, например A-Z определяет множество символов, состоящее из заглавных латинских букв. Символтерминатор строки ’\0’ не может быть использован в множестве сканирования.Вызов функцииСохранённое значение"12"sscanf("129E-2", "%[12345]", &s[0])sscanf("129E-2", "%[^EFG]", &s[0])"129"sscanf("129E-2", "%[0-9A-Fa-f]", &s[0]) "129E"sscanf("129E-2", "%1[0-9A-Fa-f]","1"&s[0])Спецификатор %%. Спецификатор используется для сопоставления текущего вводимогосимвола с символом %.
Спецификатор не сохраняет значения.Вызов функцииСохранённое значениеsscanf("% 0xA", "%% %i", &i)101.4 Функции сканирования#include <stdio.h>int scanf(const char *format, ...);int fscanf(FILE *stream, const char *format, ...);int sscanf(const char *str, const char *format, ...);Функции сканирования считывают входные символы согласно спецификации формата,описанной выше. Формат может содержать спецификации преобразования, результаты таких преобразований сохраняются по адресам, переданным в качестве параметров функций.Функция scanf считывает символы со стандартного потока ввода, fscanf считывает символы из заданного дескриптора потока, а функция sscanf считывает символы их строки, накоторую указывает аргумент str.Функции возвращают количество успешно выполненных спецификаций преобразования,предполагающих чтение входных символов.
Это число может быть меньше, чем количествозаданных спецификаций преобразования и даже 0. Ноль обозначает, что несмотря на то,что входные символы были доступны, форматных преобразований не было выполнено, чащевсего из-за недопустимого символа, встретившегося во вводе, например из-за алфавитногосимвола при преобразовании %d. Значение EOF возвращается, если ошибка ввода или конецфайла произошли до первого форматного преобразования. Пропуск ведущих пробельныхсимволов, выполняемый при определённых спецификациях преобразования, не считаетсяначалом форматного преобразования.
Если ошибка ввода или конец файла произошли после того, как началось первое форматное преобразование, возвращается количество успешно выполненных до наступления ошибки или конца файла форматных преобразований. Дляфункции sscanf чтение символа-терминатора ’\0’ эквивалентно достижению конца файла.11.