- •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. Функции ввода-вывода символов
33.Ввод и вывод одного символа
В данном разделе мы рассмотрим функции, применяемые при вводе и выводе. кроме того мы коснемся других аспектов этого понятия. Под функциями ввода-вывода подразумеваются функции, которые выполняют транспортировку данных в программу и из нее. Мы уже использовали две такие функции: printf( ) и scanf( ). Теперь рассмотрим несколько других возможностей, предоставляемых языком Си.
Функции ввода-вывода не входят в определение языка Си. Их разработка возложена на программистов, реализующих компилятор с языка Си. С другой стороны, выгода использования стандартного набора функций ввода-вывода на всех системах очевидна. Это дает возможность писать переносимые программы, которые легко можно применять на разных машинах. В языке Си имеется много функций ввода-вывода такого типа, например printf( ) и scanf( ). Ниже мы рассмотрим функции getchar( ) и putchar( ).
Эти две функции осуществляют ввод и вывод одного символа при каждом обращении к ним. Этот способ ввода данных лучше соответствует возможностям машины. Более того, такой подход служит основой построения большинства программ обработки текстов, являющихся последовательностями обычных слов. Мы увидим, как можно применять эти функции в программах, занимающихся подсчетом символов, чтением и копированием файлов. Узнаем про буферы, эхо-печать и переключение ввода-вывода.
Функция getchar( ) получает один символ, поступающий с пульта терминала (и поэтому имеющий название), и передает его выполняющейся в данный момент программе. Функция putchar( ) получает один символ, поступающий из программы, и пересылает его для вывода на экран. Рассмотрим пример программы, которая принимает один символ с клавиатуры, и выводит его на экран:
/*ввод-вывод*/
#include <stdio.h>
main( )
{
char ch;
ch=getchar( ); /***1***/
putchar(ch); /***2***/
}
Для большинства систем спецификации функции getchar и putchar содержатся в файле stdio.h, поэтому мы указали данный файл в программе. Функция getchar( ) аргументов не имеет, т.е. при ее вызове в круглые скобки не помещается никакая величина. Она просто получает очередной поступающий символ, и сама возвращает его значение выполняемой программе. Оператор, приведенный в строке 1, присваивает значение функции getchar( ) переменной ch. Функция putchar( ) имеет один аргумент. При ее вызове необходимо в скобках указать символ, который требуется вывести на печать. Аргументом может быть одиночный символ (включая знаки, представляемые управляющими последовательностями), переменная или функция, значением которой является одиночный символ. Правильным обращением к функции putchar( ) является указание любого из этих аргументов при ее вызове:
putchar('D');
putchar('\n');
putchar('\007');
putchar(ch); /* переменная типа char */
putchar(getchar( ));
Модифицируем нашу программу:
#include <stdio.h>
main( )
{
putchar(getchar( ));
}
Такая запись очень компактна и не требует введения вспомогательных переменных. В результате компиляции такая программа оказывается более эффективной.