- •1. Введение.
- •2. Общие положения.
- •3. Форматирование ввода-вывода средствами языка с
- •4. Функция printf()
- •6. Оператор printf - вывод целых чисел в восьмиричном и
- •10. Оператор printf - вывод значений типа char
- •11. Оператор printf - вывод чисел с плавающей точкой в
- •12. Оператор printf - вывод чисел с плавающей точкой в
- •13. Оператор printf - вывод текстовых строк
- •15. Оператор printf - вывод значений со знаком
- •16. Оператор printf - форматирование вывода целого значения
- •18. Оператор printf - вывод префикса перед восьмиричными и
- •19 . Оператор printf - форматирование чисел с плавающей точкой
- •20. Оператор printf - форматирование экспоненциального представления
- •21. Оператор printf - вывод с выравниванием слева
- •22. Оператор printf - комбинирование спецификаторов формата
- •23. Оператор printf - перенос символьной строки
- •24. Оператор printf - вывод текстовых строк по near- и far-указателям
- •25. Оператор printf - работа с Esc-символами
- •26. Оператор printf - определение количества выводимых символов
- •27. Оператор printf - использование возвращаемого значения
- •28. Ansi-драйвер
- •29. Использование ansi-драйвера для очистки экрана
- •30. Использование ansi-драйвера для управления цветом на экране
- •31. Использование ansi-драйвера для позиционирования курсора
- •33.Ввод и вывод одного символа
- •35.Буферы
- •36. Чтение одной строки
- •37. Функции ввода-вывода символов
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.