Главная » Просмотр файлов » Керниган и Ритчи - Язык программирования Си

Керниган и Ритчи - Язык программирования Си (793773), страница 59

Файл №793773 Керниган и Ритчи - Язык программирования Си (Керниган и Ритчи - Язык программирования Си) 59 страницаКерниган и Ритчи - Язык программирования Си (793773) страница 592019-04-24СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 59)

Каждая спецификация преобразования начинается с % и заканчиваетсясимволом-спецификатором преобразования. Между % и символом-спецификатором в порядке, в которомони здесь перечислены, могут быть расположены следующие элементы информации:Флаги (в любом порядке), модифицирующие спецификацию:-— указывает на то, что преобразованный аргумент должен быть прижат к левому краюполя;+— предписывает печатать число всегда со знаком;пробел— если первый символ - не знак, то числу должен предшествовать пробел;0— указывает, что числа должны дополняться слева нулями до всей ширины поля;#— указывает на одну из следующих форм вывода: для o первой цифрой должен быть0; для х или X ненулевому результату должны предшествовать 0х или 0Х; для е, Е, f, gи G вывод должен обязательно содержать десятичную точку; для g и G завершающиенули не отбрасываются.Число, специфицирующее минимальную ширину поля.

Преобразованный аргумент будет напечатан вполе, размер которого не меньше указанной ширины, а если потребуется, в поле большего размера.Если число символов преобразованного аргумента меньше ширины поля, то поле будет дополненослева (или справа, если число прижимается к левому краю). Обычно поле дополняется пробелами(или нулями, если присутствует флаг дополнения нулями).Точка, отделяющая указатель ширины поля от указателя точности.Число, задающее точность, которое специфицирует максимальное количество символов, печатаемыхиз строки, или количество цифр после десятичной точки в преобразованиях е, Е или f, или количествозначащих цифр для g или G-преобразования, или минимальное количество цифр при печати целого(до необходимой ширины поля число дополняется слева нулями).Модификаторы h, l (буква ell) или L. "h" указывает на то, что соответствующий аргумент долженпечататься как short или unsigned short; "l" сообщает, что аргумент имеет тип long илиunsigned long; "L" информирует, что аргумент принадлежит типу long double.Ширина, или точность, или обе эти характеристики могут быть специфицированы с помощью *; в этом случаенеобходимое число "извлекается" из следующего аргумента, который должен иметь тип int (в случае двухзвездочек используются два аргумента).Символы-спецификаторы и разъяснение их смысла приведены в таблице В-1.

Если за % нет правильногосимвола-спецификатора, результат не определен.int printf(const char *format, ...)printf(...) полностью эквивалентна fprintf(stdout,...).int sprintf(char *s, const char *format, ...)sprintf действует так же, как и printf, только вывод осуществляет в строку s, завершая еесимволом '\0'. Строка s должна быть достаточно большой, чтобы вмещать результат вывода.Возвращает количество записанных символов, в число которых символ '\0' не входит.int vprintf (const char *format, va_list arg)int vfprintf (FILE *stream, const char *format, va_list arg)int vsprintf (char *s, const char *format, va_list arg)Функции vprintf, vfprintf и vsprintf эквивалентны соответствующим printf-функциям с тойлишь разницей, что переменный список аргументов представлен параметром arg,инициализированным макросом va_start и, возможно, вызовами va_arg (см.

в В7 описание<stdarg. h>).Таблица В-1. Преобразования printfСимволТип аргумента; вид печатиd, iint; знаковая десятичная записьoint; беззнаковая восьмеричная запись (без 0 слева)x, Xunsigned int; беззнаковая шестнадцатеричная запись (без 0х или 0Х слева), вкачестве цифр от 10 до 15 используются abcdef для х и ABCDEF для Xuint; беззнаковое десятичное целоеcint; единичный символ после преобразования в unsigned charschar *; символы строки печатаются, пока не встретится ' \0' или не исчерпаетсяколичество символов, указанное точностьюfdouble; десятичная запись вида *-]mmm.ddd, где количество d специфицируетсяточностью.

По умолчанию точность равна 6; нулевая точность подавляет печатьдесятичной точкиe, Edouble; десятичная запись вида *-]m.dddddde±xx или запись вида *-]m.ddddddE±xx,где количество d специфицируется точностью. По умолчанию точность равна 6;нулевая точность подавляет печать десятичной точкиg, Gdouble; используется %е и %Е, если порядок меньше -4 или больше или равенточности; в противном случае используется %f. Завершающие нули и точка в конце непечатаютсяpvoid *; печатает в виде указателя (представление зависит от реализации)nint *; число символов, напечатанных к данному моменту данным вызовом printf,записывается в аргумент.

Никакие другие аргументы не преобразуются%никакие аргументы не преобразуются; печатается %В 1.3. Форматный вводФункции scanf имеют дело с форматным преобразованием при вводе.int fscanf(FILE *stream, const char *format, ...)fscanf читает данные из потока stream под управлением fоrmat и преобразованные величиныприсваивает по порядку аргументам, каждый из которых должен быть указателем.

Завершаетработу, если исчерпался формат. Выдает EOF по исчерпании файла или перед любымпреобразованием, если возникла ошибка; в остальных случаях функция возвращает количествопреобразованных и введенных элементов.Форматная строка обычно содержит спецификации преобразования, которые используются для управлениявводом. В форматную строку могут входить:пробелы и табуляции, которые игнорируются;обычные символы (кроме %), которые ожидаются в потоке ввода среди символов, отличных отсимволов-разделителей;спецификации преобразования, состоящие из %; необязательного знака *, подавляющегоприсваивание; необязательного числа, специфицирующего максимальную ширину поля;необязательных h, l или L, указывающих размер присваиваемого значения, и символаспецификатора преобразования.Спецификация преобразования определяет преобразование следующего поля ввода. Обычно результатразмещается в переменной, на которую указывает соответствующий аргумент.

Однако если присваиваниеподавляется с помощью знака *, как, например, в %*s, то поле ввода просто пропускается, и никакогоприсваивания не происходит. Поле ввода определяется как строка символов, отличных от символовразделителей; при этом ввод строки прекращается при выполнении любого из двух условий: если встретилсясимвол-разделитель или если ширина поля (в случае, когда она указана) исчерпана.

Из этого следует, что припереходе к следующему полю scanf может "перешагивать" через границы строк, поскольку символ новойстроки является символом-разделителем. (Под символами-разделителями понимаются символы пробела,табуляции, новой строки, возврата каретки, вертикальной табуляции и смены страницы.)Символ-спецификатор указывает на способ интерпретации поля ввода. Соответствующий аргумент долженбыть указателем. Список допустимых символов-спецификаторов приводится в таблице В-2.Символам-спецификаторам d, i, n, о, u и х может предшествовать h, если аргумент есть указатель на short(а не int) или l (буква ell), если аргумент есть указатель на long. Символам-спецификаторам е, f и g можетпредшествовать l, если аргумент — указатель на double (а не float), или L, если аргумент — указатель наlong double.int scanf (const char *format, .

. . )scanf (...) делает то же, что и fscanf (stdin, ...).int sscanf (const char *s, const char *format, ...)sscanf (s, ...) делает то же, что и scanf (...), только ввод символов осуществляет изстроки s.Таблица В-2. Преобразования scanfСимволДанные на вводе; тип аргументаdдесятичное целое; int *iцелое; int *.

Целое может быть восьмеричным (с нулем слева) или шестнадцатеричным (с 0хили 0Х слева)oвосьмеричное целое (с нулем слева или без него); int *uбеззнаковое десятичное целое; unsigned int *xшестнадцатеричное целое (с 0х или 0Х слева или без них); int *cсимволы; char *. Символы ввода размещаются в указанном массиве в количестве, заданномшириной поля; по умолчанию это количество равно 1. Символ '\0' не добавляется. Символыразделители здесь рассматриваются как обычные символы и поступают в аргумент.

Чтобыпрочесть следующий символ-разделитель, используйте %1ssстрока символов, отличных от символов-разделителей (записывается без кавычек); char *,указывающий на массив размера достаточного, чтобы вместить строку и добавляемый к нейсимвол '\0'e, f, gчисло с плавающей точкой; float *.

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

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

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

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