Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс ПЯВУ 2 сем / Лекции 2 сем / Л№33 ФорматировВвод / Лекция № 31. Форматированный Ввод вывод .odt
Скачиваний:
16
Добавлен:
17.04.2015
Размер:
50.53 Кб
Скачать

26. Оператор printf - определение количества выводимых символов

При выполнении в программе сложного форматированного вывода на экран может возникнуть потребность в определении количество символов, выводимых функцией printf. Для этой цели служит спецификатор формата %n. При использовании спецификатора %n соответствующей переменной (передаваемой vprintfno указателю) присваивается количество символов, выведенных функцией до обработки данного спецификатора. Следующая программа PRT_CNT.C демонстрирует использование спецификатора формата %n:

#include <stdio.h>

void main()

{

int first_count;

int second_count;

printf("1001%n совет по C/C++%n\n ",&first_count, &second count);

printf("first count= %d second count=%d\n ", first count, second count);

}

После компиляции и запуска этой программы на экран выводится:

1001 совет по С/С++

first_count= 4

second_count=19

27. Оператор printf - использование возвращаемого значения

Ранеебылопоказано, как с помощью спецификатора формата %n можно определить число выведенных символов. Использование этого спецификатора - это один из способов для проверки успешного выполнения вывода при использовании функции printf. Кроме этого, функция printf возвращает общее число выведенных символов при своем завершении. Если при выполнении printf возникает ошибка, то функция возвращает константу EOF. Следующая программа PRINTFOK.C демонстрирует использование возвращаемого значения printf для проверки успешного завершения:

#include <stdio.h>

void main ()

{

int result;

result = printf("1001 совет по C/C++!\n ") ;

if (result == EOF)

fprintf(stderr, " Ошибка при выполнении printf\n ");

}

Если переназначить вывод программы в файл или на устройство (такое как PRN), а операция переназначенного ввода-вывода приводит к ошибке (устройство не готово к работе или нет свободного пространства на диске), то обнаружить ошибку можно, проверяя значение, возвращаемое функцией prinlf.

28. Ansi-драйвер

В предшествующих советах подробно рассматривались возможности форматирования при выводе данных функцией printf. Спецификаторы формата функции printf позволяют управлять числом выводимых цифр, выравниванием текста слева или справа, отображением вывода в восьмиричном или шестнадцатиричном виде. Однако они не обеспечивают средств, позволяющих, например, позиционировать курсор в указанные строку и колонку, очищать экран или управлять цветом вывода. Тем не менее, в зависимости от используемой операционной системы, вероятней всего, имеется возможность для выполнения таких операций с помощью ANSI-драйвера. ANSI-драйвер отрабатывает особые управляющие последовательности символов (Esc-последовательности), которые и задают использование заданного цвета, позиционирование курсора и даже очистку экрана. Название "Esc-последовательность" связано с тем, что управляющие последовательности символов начинаются с ASCII-символа Escape (значение 27). При работе в операционной среде DOS ANSI-драйвер можно установить, включив в файл CONFIG.SYS следующий параметр (и затем перезагрузить операционную систему):

DEVICE=C : \DOS\ANSI. SYS

После установки ANSI-драйвера становится возможным использование Esc-последовательностей в строке вывода функции printf.