Главная » Просмотр файлов » Форматный ввод-вывод

Форматный ввод-вывод (1114939)

Файл №1114939 Форматный ввод-вывод (Мини-учебник с ejudge = Чернокнижка)Форматный ввод-вывод (1114939)2019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Содержание1 Форматный ввод-вывод1.1 Строка формата функций печати . . . .1.2 Функции печати . . . . . . . . . . . . .1.3 Строка формата функций сканирования1.4 Функции сканирования . . . . . . . . .1........................................................................................126711Форматный ввод-выводНесколько библиотечных функций позволяют преобразовывать значения между внутренним представлением и текстовыми последовательностями, которые могут быть прочитаны и записаны.

Аргументом format этих функций является строка формата, котораяопределяет требуемые преобразования. Функции делятся на две группы:• Функции печати, объявленные в заголовочном файле <stdio.h>, преобразуют внутреннее представление в последовательности типа char и позволяют комбинировать последовательности для вывода. К этой группе относятся функции fprintf,vfprintf, printf, vprintf, sprintf, vsprintf, snprintf, vsnprintf.• Функции сканирования, объявленные в <stdio.h>, преобразуют последовательности типа char и позволяют сканировать считываемые последовательности. К этойгруппе относятся функции fscanf, scanf, sscanf.Строка формата состоит из нуля или более спецификаций преобразования, литеральноготекста и пробелов.

Пробелы — это последовательность одного или более пробельных символов c, для которых вызов isspace(c) возвращает ненулевой результат.Функции печати или сканирования просматривают форматную строку один раз от началадо конца для того, чтобы определить какие преобразования необходимо выполнить. Каждаяиз функций печати или сканирования принимает переменное число аргументов либо непосредственно, либо с помощью аргумента типа va_list. Некоторые спецификации преобразования в форматной строке используют следующий аргумент в списке аргументов. Функциипечати или сканирования используют каждый аргумент не более одного раза.

Аргументы, находящиеся в конце списка аргументов, могут остаться неиспользованными.Стандарт C99 позволяет явно задавать, какой аргумент должен быть использован дляпреобразования printf во всех местах, требующих аргумент. Явное указание номера аргумента, содержащего преобразуемое значение, имеет вид %m$. Явное указание номера аргумента, содержащего ширину поля или точность, имеет вид %m$.

В обоих случаях m — этодесятичная запись целого числа, которая содержит хотя бы одну цифру, — порядковый номер аргумента, причём первый аргумент после форматной строки имеет номер 1. Таким образом, записи printf("%*d", width, num); и printf("%2$*1$d", width, num);эквиваленты. Новый стиль позволяет использовать один и тот же аргумент несколько раз.Стандарт C99 не позволяет смешивать оба стиля в одной спецификации форматного преобразования.В дальнейшем:• Целочисленные преобразования — спецификации преобразования, которые оканчиваются на d, i, o, u, x или X.1• Вещественные преобразования — спецификации преобразования, которые оканчиваются на e, E, f, g или G.1.1 Строка формата функций печатиДля функций печати литеральный текст или пробельные символы в строке формата генерируют символы, совпадающие со строкой формата.

Спецификация преобразования обычногенерирует символы, преобразовывая значение следующего аргумента в соответствующуютекстовую последовательность. На рис. 1 показан синтаксис спецификаций преобразованияфункции printf.+ −# 0space0−9*..0−9h l L*cdeEfgGinopsuxX%Рис. 1: Синтаксис спецификаций преобразования функции printf (C90)Флаги. После знака процента % в форматной строке могут быть записаны ноль или болеефлагов:• - для выравнивания по левому краю;• + для печати знака «плюс» для положительных знаковых значений;• space для печати пробела для знаковых значений, имеющих ни знака «плюс», ни знака «минус»;• # для печати 0 («ноль») перед преобразованием o (восьмеричные числа), печати 0xперед преобразованием x, печати 0X перед преобразованием X, или для печати десятичной точки и цифр дробной части числа, в случаях, когда они бы не печатались впреобразованиях плавающей точки;• 0 («ноль») для выравнивания преобразования ведущими нулями после любого знакаили префикса в случае отсутствия флага - («минус») или спецификации точности.Ширина поля.

После всех флагов может быть записана ширина поля, которая задаёт минимальное количество символов, которые сгенерируются для данного преобразования. Если выравнивание явно не задано флагами, преобразование недостаточной длины поумолчанию заполняется слева пробелами. Если вместо десятичного числа записан символ *,функция печати использует следующий аргумент функции, который должен иметь тип int,как ширину поля. Если значение аргумента отрицательно, оно устанавливает флаг -, а егоабсолютное значение задаёт ширину поля.Точность. После спецификации ширины поля может быть записан знак .

(«точка»),за которым следует спецификация точности преобразования, которая обозначает: минимальное количество цифр для генерации по целочисленному преобразованию; количество2знаков после десятичной точки для преобразований e, E, f; максимальное количество значащих цифр для генерации по преобразованиям g или G; максимальное количество символовдля печати из строки по преобразованию s.Если вместо десятичного числа, задающего точность, записан знак *, функция печати использует следующий аргумент функции, который должен иметь тип int, как значение точности.

Если значение аргумента отрицательно, используется точность по умолчанию. Еслипосле знака . («точка») не записано ни десятичного числа, ни знака *, точность полагаетсяравной 0.Спецификатор преобразования. После точности следует спецификатор преобразования, состоящий из одного символа, перед которым может находиться односимвольный квалификатор преобразования (стандарт C99 определяет несколько двухсимвольных квалификаторов). Каждая комбинация определяет тип, требуемый для следующего аргумента, и как аргумент меняется перед преобразованием его в текстовую последовательность. Целочисленные и вещественные преобразования кроме того определяют, какая система счисления используется для перевода в текстовое представление.

Если спецификаторпреобразования требует точности p, которая не задана в формате, выбирается точность поумолчанию, которая зависит от спецификатора преобразования. В таблицах 1, 2 перечислены комбинации и их свойства.Спецификатор преобразования определяет всё поведение, не заданное в таблице. В описании, приведённом ниже, p — точность преобразования. Каждый спецификатор преобразования сопровождён примерами.

Одно преобразование может генерировать до 509 символов(стандарт C99 увеличивает предел до 4095 символов).Спецификатор %c. Спецификатор используется для генерации одного символа из конвертированного значения.Результат преобразованияОператорprintf("%c", ’a’);aprintf("<%3c|%-3c>", ’a’, ’b’); < a|b >Спецификаторы %d, %i, %o, %u, %x, %X. Спецификаторы используются для генерациитекстового представления целого числа возможно со знаком.

d или i задаёт знаковое десятичное представление, o задаёт беззнаковое восьмеричное представление, u — беззнаковоедесятичное представление, x — беззнаковое шестнадцатеричное представление, используяцифры 0—9 и a—f, X — беззнаковое шестнадцатеричное представление, используя цифры0—9 и A—F. Преобразование генерирует минимум p цифр для представления преобразованного значения. Если p равно 0, преобразованное значение 0 не генерирует цифр.ОператорРезультат преобразованияprintf("%d %o %x", 31, 31, 31); 31 37 1fprintf("%hu", 0xffff);65535printf("%#X %+d", 31, 31);0X1F +31Спецификаторы %e, %E. Спецификаторы используются для генерации знакового дробного числа с показательной частью.

Сгенерированный текст имеет вид ±d.d p E ± d q , где d —это десятичная цифра, E — это либо символ e для преобразования e, либо символ E для преобразования E. Сгенерированный текст содержит одну десятичную цифру, десятичную точку,если p не равен нулю, или задан флаг преобразования #, p цифр дробной части, q цифр (q > 2)показателя.

Число перед преобразованием округляется до самого младшего показываемогознака. Значение 0 имеет экспоненту 0.3СпецификаторТип аргументаПреобразованноениезначе-hhd, hhid, ihd, hild, lilld, lliLd, Liqd, qijd, jitd, tihhoohololloLoqojozohhuuhululluLuqujuzuhhx, hhXx, Xhx, hXlx, lXllx, llXLx, LXqx, qXjx, jXzx, zXint xint xint xlong xlong long xlong long xlong long xintmax_t xptrdiff_t xunsigned int xunsigned int xunsigned int xunsigned long xunsigned long long xunsigned long long xunsigned long long xuintmax_t xsize_t xunsigned int xunsigned int xunsigned int xunsigned long xunsigned long long xunsigned long long xunsigned long long xuintmax_t xsize_t xunsigned int xunsigned int xunsigned int xunsigned long xunsigned long long xunsigned long long xunsigned long long xuintmax_t xsize_t x(signed char) x(int) x(short) x(long) x(long long) x(long long) x(long long) x(intmax_t) x(ptrdiff_t) x(unsigned char) x(unsigned int) x(unsigned short) x(unsigned long) x(unsigned long long) x(unsigned long long) x(unsigned long long) x(uintmax_t) x(size_t) x(unsigned char) x(unsigned int) x(unsigned short) x(unsigned long) x(unsigned long long) x(unsigned long long) x(unsigned long long) x(uintmax_t) x(size_t) x(unsigned char) x(unsigned int) x(unsigned short) x(unsigned long) x(unsigned long long) x(unsigned long long) x(unsigned long long) x(uintmax_t) x(size_t) xОснованиеТочность101010101010101010888888888101010101010101010161616161616161616111111111111111111111111111111111111ПримечанияC99C99GNUBSDC99C99C99C99GNUBSDC99C99C99C99GNUBSDC99C99C99C99GNUBSDC99C99Таблица 1: Целочисленные спецификаторы преобразования printf и их свойства4СпецификаторceLeELEfLfgLgGLGaLaALAnhnlnps%Тип аргументаint xdouble xlong double xdouble xlong double xdouble xlong double xdouble xlong double xdouble xlong double xdouble xlong double xdouble xlong double xint *xshort *xlong *xvoid *xchar x[]нетПреобразованное значение(unsigned char) x(double) x(long double) x(double) x(long double) x(double) x(long double) x(double) x(long double) x(double) x(long double) x(double) x(long double) x(double) x(long double) x(void *) xx[0]...’%’ОснованиеТочность10101010101010101010161616166666666666ppppПрим.C99C99C99C99∞Таблица 2: Прочие спецификаторы преобразования printf и их свойстваРезультат преобразованияОператорprintf("%e", 31.4);3.140000e+01printf("%.2E", 31.4);3.14e+01printf("%e", 1e105);1.000000e+105printf("%e", 0.0);0.000000e+00Спецификатор %f.

Спецификатор используется для генерации текстового представления знакового дробного числа без показательной части. Сгенерированный текст имеет вид±d q .d p , где d — это десятичная цифра. Сгенерированный текст содержит по крайней мере одну десятичную цифру, десятичную точку, если p не равен нулю, или задан флаг преобразования #, p цифр дробной части. Число перед преобразованием округляется до самогомладшего показываемого знака.ОператорРезультат преобразования31.400000printf("%f", 31.4);31 31.printf("%0f %#f", 31.0, 31.0);printf("%3f", 1002.1);1002.100000printf("<%10f>", 2.4);< 2.400000>Спецификаторы %g, %G.

Спецификаторы используются для генерации текстового представления знакового дробного числа с показательной частью или без неё. Для преобразования %g сгенерированный текст имеет ту же форму, как при преобразовании %e или %f. Дляпреобразования %G сгенерированный текст имеет ту же форму, как при преобразовании %Eили %F. Точность p определяет количество генерируемых значащих цифр. Если p равно 0,оно заменяется на 1. Если преобразование %e дало бы показатель в диапазоне [−4, p), применяется преобразование %f. Сгенерированный текст не имеет незначащих нулей в дробной5части числа и содержит десятичную точку только в случае ненулевого количества цифр дробной части, кроме случая, если задан флаг преобразования #.Результат преобразованияОператорprintf("%.6g", 31.4);31.4printf("%.1g", 31.4);3.14e+01Спецификаторы %a, %A.

Характеристики

Тип файла
PDF-файл
Размер
139,79 Kb
Тип материала
Высшее учебное заведение

Тип файла PDF

PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов книги

Мини-учебник с ejudge = Чернокнижка
Еще
Entry level
sem12 - Средства межпроцессного взаимодействия и синхронизации. Файлы-замки. Анонимные каналы. Именованные каналы. Обработчики завершения программы. Принудительное завершение процесса..pdf
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее