Г. Шилдт - Полный справочник по C++ (1109478), страница 105
Текст из файла (страница 105)
Количество аргументов золжно точно совпздать с количеством спсцификаторов формата, причем их порялок следования должен быть одинаковым. Например, слслуюцши вызов функции рхьпсе() выведет на экран строку "Привет г" )О всему' б рк1пг((" Привет ьс ьо Ъв",'б', 10, "всем!"); Если количество аргументов функции ркзпск() меньше количества спсцификаторов формата, вывод будет неопределенным. Если число аргументов больше числа спецификаторов формата, лишние аргументы игнорируются. Спсцификаторы формата перечислены в табл.
25.2. Таблица 25.2, Спецнфикаторы Формата функции рпп((Ц Кол Символ Десятичное целое число со знаком Десятичное цепов число со знаком Научный формат (строчная буква е) Научный формат (прописная буква Е) Десятичное число с плавающей точкой В зависимости ст того, какой формат короне, применяется либо че, либо че В зависимости от того, какой формат короче, применяется либо чв, либо ье Восьмеричное число без знака Строка символов Десятичное целое число без знака Шестнадцатеричное число без знака (строчиые буквы) Шестнадцатеричное число без знака (прописные буквы) Указатель Указатель на целочисленную переменную. Специфихатор вызывает присвоение зтои целочисленной переменной количества символов, выведенных перед ним Знак ч (рункпия ркзпсл() возвращает количество факгичсски напечатанных символов.
Отрицательное число означает ошибку. Коды формата могут иметь молификаторы, задающие ширину поля, точность и признак выравнивания по левому краю. ((слое число, указанное между знаком про~юнта зз и кодом формата, действует как слеци4икиглор мцлиз<альлой ширины лола. Он заполняет поле вывода пробелами или нулямн, обеспечивая ес минимальнузо ширину. Если строка или число больше лзинимальной ширины поля, они все равно выводятся полностью. По умолчанинз в качестве заполнителя используется пробел. Если пустуюшсе псле вывода необходимо заполнить нулями, перед спсцификатором ширины поля следует поставить символ О.
Например, спсцификатор ззобс) заполнит нулями Часть Ш. Библиотека стандартных функций пустуюшие позиции поля вывода, если количество цифр в целом числе, подлежацем выводу, будет меньше пяти. Точный смысл моди4икатора гяочявслш зависит от кода модифицируемого формата. Чтобы добавить молификатор точности, после спецификатора ширины поля необходимо поставить десятичную точку и указать точность. Для форматов е, д и д модификатор точности означает количество цифр после десятичной точки. Например, форматный кол тахо вд выведет на экран число, у которого количество цифр не превышает 10, четыре из которых размешаются после десятичной точки.
Если модификатор применяется к спецификаторам формата зад или чд, он задает количество значаших цифр. Если молификатор точности применяется к целым типам, он залает минимальное количество цифр, из которых лолжно состоять число. Если число состоит из меньшего количества цифр, оно лополняется ведушими нулями.
Если модификатор используется для вывода строк, он залает максимальную длину поля. Например, спецификатор чв.дв означает, что на экран будет выведена строка, состояшая как минимум из пяти символов, длина которой не превышает семи. Если строка окажется длиннее, послелние символы булут отброшены. По умолчанию вывод выравнивается по правому краю. Иначе говоря, если ширина поля больше, чем выводимые ланные, результаты прижимаются к правому краю.
Вывод можно выровнять по левому краю, поставив перел символом за знак "минус". Например, спецификатор за-1О.ЗД выравнивает число с двумя знаками после точки по левому краю поля, состояшего из !О позиций. Для вывода значений переменных типа вьаге зпг и 1опд впе функция ргзпггО использует два молификаюра, которые можно применять к спепификаторам ((, х, о, и и х. Модификатор 1 (буква "эль") позволяет выводить значения т.нпа 1опд хпе.
Например, спецификатор ъ1е( означает, что на экран будет выведено значение типа 1опд 1пг. Для вывода значения типа вьоге зпе используется модификатор ь. например, спецификатор ВЬц означает, что на экран булет выведено значение типа вЬогс опввдаех( 1пс. Начиная с 1995 года компиляторы поддерживают работу с расширенными символами. Для этого к спецификатору е применяется молификатор 1. В этом случае он задает расширенный символ.
Аналогично, если модификатор 1 стоит перед спецификаторол~ в, на экран выводится строка расширенных символов. Модификатор ь можно использовать как префикс перед спецификаторами е, д и д. Он означает, что на экран выводится значение типа 1опд боиь1е. Спецификатор формата ъи отличается от всех остальных. Он заставляет функцию рг1псд() записывать в соответствующую переменную количество символов, уже выведенных на экран.
Спецификатору чп должен соответствовать целочисленный указатель. После завершения функции рг1педО этот указатель будет ссылаться на переменную, в которой содержится количество символов, выведенных до спецификатора тат Вьпс1цс)е <аес)ьо.Ь> (пс а~а(п(чоЫ) зпс соцпс; рг(пс1("Это%о проверка~а", асоопс); ргьпсг("Ы", соиле); гесцгп О; ) Эта программа выведет на экран строку "Это проверка" и число 3. функция рг1псг () имеет еше два модификатора: * и (). Глава 25. функции ввода-вывода языка С Модификатор В, стоящий перед спецификаторами я, и, я, х или е, гарантирует, что число будет аолержать десятичную точку, лаже если оно не имеет дробной части. Если этот модификатор стоит перед спецификаторами и или х, шестнадцатеричные числа вывалятся с префиксом ои.
Если же символ и указан перед апецификатором о, число будет лополнено ведущими нулями. К другим спецификаторам модификатор й применять нельзя. Ширину поля и точность прелставления числа можно задавать не только константами, но и переменными, Для этого вместо точных значений в спецификаторе следует указать символ я. При сканировании строки вывода функция рацея() поочередно сопоставляет молификатор е с кахатым аргументом Зависимые функции: веепя() и ЕргХпав() . Функция рн1с В(па1це)е <аэсЖо> (па расс(впа ал, Ргье *пгеит); Функция рпкс() записывает символ, содержагцийся в младшем байте числа сЬ, в текущую позицию потока зггеиль Поскольку при вызове функции рисе() все символьные аргументы преобразуются в целочисленный тип, в качестве ее аргументов можно использовать символы.
В случае успешного выполнения функция рпкс() возвращает количеатво считанных символов, в противном случае она возвращает константу хор. Если файл открыт в бинарном режиме, константа вов' может представлять собой корректный символ, поэтому в этом случае для распознавания ошибки следует вызывать функцию веггег() . Зависимые функции: хдеае(), врпеа(), яеаейвг() и рпаайег() .
Функция рсйс$иг Ввпа)псе <свае((о> Епа рцаайаг(гпс сл); Функция рпесйег() записывает символ, содержащийся в млалшем байте числа ал, в текугцую позицию потока вадьп. С функциональной точки зрения эта функция эквивалентна рпее(сй, наиде). Поскольку при вызове функции рцасйаг() все символьные аргументы преобразуются в целочисленный тип, в качестве ее аргументов можно использовать символы, В случае успешного выполнения функция рпесйиг() возвращает записанный символ, в противном случае она возвращает константу впр. Зависимая функция: рпее() . Функция риаз Ввпс1пде <аваа(во> Ьпс раса(аопэа айаг 'пг)г Функция рпав() записывает в поток ваетхп содержимое строки, на которую ссылается указатель згг. Нулевой символ, служащий индикатором конца файла, преобразуется в символ перехода на новую строку.
В случае успеха функция рпаа() возвращает положительное число, а в противном случае — константу хор. Завиаимые функции: рцае(), яеав[) и ргхпев[). Часть )й. Библиотека стандартных функций Функция гепип(е * Квпс1ис)в <сяее((о> впс тегаосе(сопят с)зат "Главе) г Функция *язв>тв() стирает файл„заданный параметром этне. Если файл успешно удален, функция возвращает нуль, в противном случае возврашается ненулевое значение. Зависимая функция:кепавтО. Функция гепагпе 1 Кгпс1ис)е ссяСЫо> тпс тепате(сопяс сйат "сЫнате, сопяс спат 'пениате) Функция квпажв()меняет имя файла, заданного указателем о(гните, на имя, заданное параметром пенУлятв Указатель лтг(пяте не должен ссылаться ни на один из сушествуюший файлов в текушем каталоге.
В случае успеха функция квпввт() возвращает нуль, в противном случае возврашается ненулевое значение. Зависимая функция: квяг>чаи. Функция геяппд 1 Вьпс1ис)е <сяМго> иоЫ сентпс((В1ЬВ птат); Функция кеи1пд() перемешает файловый курсор в начало указанного потока. Кроме того, она стирает признак конца файла и флаг ошибки, связанный с потоком жгеат Функция не возврашает никакого значения. Зависимая функцигс кяее)е() . Функция асап1 1 Мгпс1иое ясяЫьо> зпс ясапх(сопяс спях. >Гягтаг, ...) г Функция ясапд(] представляет собой универсальную процедуру, которая считывает данные из потока яе((дп и записывает их в переменные, указанные в списке аргументов. Она может считывать данные всех встроенных типов и автолзатически преобразовывать числа в соответствующий внутренний формат.
Управляюшая строка состоит из символов, разделенных на три категории. ° Спецификаторы формата, ° Разделители. ° Символы, не являюшиеся разделителями. Перед спецификаторами формата стоит символ ъ. Они сообшают функции всапд() тип данных, подлежаших вводу. Зти коды перечислены в табл. 8.3. Например, спецификатор ъя считывает строку, а знт — целое число.
Спецификаторы формата сопоставляются с аргументами слева направо. Для ввола значений типа 1опв 1пе перед спецификатором формата следует поставить модификатор 1 (букву "зль"). Для ввода значений типа я)юкс 1пе перед спецификатором формата следует поставить модификатор )ь Этн модификаторы можно ставить перед спецификаторами ((, Х, о, и, х и п.