Программирование видеоадаптеров

     Расходомеры
  

Функция printf


Наиболее универсальной стандартной функцией, обеспечивающей запись в выходной поток stdout, является функция printf. Она производит вывод на экран монитора строк, отдельных символов и чисел в различных форматах.

Приведем прототип функции printf:

 int printf( char *format [,argument]... );

Первый аргумент функции содержит указатель на управляющую строку, которая может состоять из:

       символов непосредственно отображаемых на экране,

       управляющих символов,

       спецификаторов формата.

Непосредственно выводимые символы и управляющие символы помещаются в выходной поток без изменения.

Если управляющая строка содержит спецификаторы формата, то каждому спецификатору должен соответствовать один аргумент, следующий за управляющей строкой. Аргументы представляют собой переменные или константы, которые преобразуются согласно соответствующих им спецификаторов формата и затем также помещаются в выходной поток.

Различные спецификаторы формата перечислены в следующей таблице:

Спецификатор формата

Тип данных



%d, %i

Целое десятичное число

%s

Текстовая строка

%c

Один символ

%e, %E

Число с плавающей точкой в экспоненциальной форме

%f

Число с плавающей точкой в десятичной записи

%u

Целое десятичное число без знака

%o

Целое восьмеричное число без знака

%x, %X

Целое шестнадцатиричное число без знака

%g, %G

Либо %e, либо %f в зависимости от того, в каком формате запись короче

%p

Значение указателя

%n

Количество символов

В более общем случае, в спецификаторе формата между символом '%' и символом, определяющим тип преобразования можно разместить флаги и префиксы типов:

% [флаг] [ширина] [.точность] [префикс типа] символ преобразования

Флаги приведены в таблице 13.3, а префиксы типов в таблице 13.4.

Параметр [ширина] задает минимальную ширину поля, используемую при печати строки или числа. Если это число или строка не помещаются в поле целиком, то ширина поля увеличивается.


Параметр [.точность] определяет для чисел количество отображаемых после запятой цифр, а для строк - максимальное число символов в строке.

Флаг

Значение

-

Выравнивание по левой границе

+

Перед числом помещается его знак

пробел (' ')

Перед данными помещается пробел

Префикс типа

Значение

F

Дальний указатель

N

Ближний указатель

h

Короткое целое

l, L

Длинное целое

Функция 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);

}


Содержание раздела