Программирование видеоадаптеров.© Александр Фролов, Григорий ФроловТом 21, М.: Диалог-МИФИ, 1993. Функция printfНаиболее универсальной стандартной функцией, обеспечивающей запись в выходной поток stdout, является функция printf. Она производит вывод на экран монитора строк, отдельных символов и чисел в различных форматах. Приведем прототип функции printf: int printf( char *format [,argument]... ); Первый аргумент функции содержит указатель на управляющую строку, которая может состоять из: . символов непосредственно отображаемых на экране, . управляющих символов, . спецификаторов формата. Непосредственно выводимые символы и управляющие символы помещаются в выходной поток без изменения. Если управляющая строка содержит спецификаторы формата, то каждому спецификатору должен соответствовать один аргумент, следующий за управляющей строкой. Аргументы представляют собой переменные или константы, которые преобразуются согласно соответствующих им спецификаторов формата и затем также помещаются в выходной поток. Различные спецификаторы формата перечислены в следующей таблице:
В более общем случае, в спецификаторе формата между символом '%' и символом, определяющим тип преобразования можно разместить флаги и префиксы типов: % [флаг] [ширина] [.точность] [префикс типа] символ преобразования Флаги приведены в таблице 13.3, а префиксы типов в таблице 13.4. Параметр [ширина] задает минимальную ширину поля, используемую при печати строки или числа. Если это число или строка не помещаются в поле целиком, то ширина поля увеличивается. Параметр [.точность] определяет для чисел количество отображаемых после запятой цифр, а для строк - максимальное число символов в строке.
Функция printf возвращает количество напечатанных ею символов или, в случае ошибки, отрицательную величину. Использование различных спецификаторов формата функции printf демонстрируется программой PRINTF (листинг 9.3). Листинг 9.3. Файл PRINTF.C // При использовании функции printf необходим файл stdio.h #include <stdio.h> void main(void) { int char_count; char ptr[] = "строка"; printf("\n%23d \n%e \n%.3E \n%f \n%+g \n%-23G \n\n", 1111, 0.01, 0.01, 0.01, 0.01, 0.0000001); printf("%s%n", ptr, &char_count); printf("\n\nПредыдущая функция вывела %d символов.\n\n", char_count); printf("Это %s, расположенная по адресу %Lp.\n\a", ptr, ptr); } |