Форматный ввод-вывод (Мини-учебник с ejudge = Чернокнижка)

PDF-файл Форматный ввод-вывод (Мини-учебник с ejudge = Чернокнижка) Практика расчётов на ПЭВМ (37217): Книга - 3 семестрФорматный ввод-вывод (Мини-учебник с ejudge = Чернокнижка) - PDF (37217) - СтудИзба2019-05-08СтудИзба

Описание файла

Файл "Форматный ввод-вывод" внутри архива находится в папке "Мини-учебник с ejudge = Чернокнижка". PDF-файл из архива "Мини-учебник с ejudge = Чернокнижка", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

Содержание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.

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