Ввод и вывод на консоль. Чтение и запись символов. Чтение и запись строк

Страницы работы

Фрагмент текста работы

ЛЕКЦИЯ № 8

ВВОД И ВЫВОД НА КОНСОЛЬ

Цель: научиться выводить информацию на экран, а также способы чтения числовых значений, текстовых строк и символов введенных с клавиатуры.

В языке Си не определено никаких ключевых слов, с помощью которых можно выполнять ввод/вывод. Вместо них используются библиотечные функции. Система ввода/вывода языка Си — это элегантная конструкция, которая обеспечивает гибкий и в то же время слаженный механизм передачи данных от одного устройства к другому. Впрочем, эта система достаточно большая и состоит из нескольких различных функций. Заголовочным файлом для функций ввода/вывода является <stdio.h>.

Чтение и запись символов

Самыми простыми из консольных функций ввода/вывода являются getchar(), которая читает символ с клавиатуры, и putchar(), которая отображает символ на экране. Первая из этих функций ожидает, пока не будет нажата клавиша, а затем возвращает значение этой клавиши. Кроме того, при нажатии клавиши на клавиатуре на экране дисплея автоматически отображается соответствующий символ. Вторая же функция, putchar(), отображает символ на экране в текущей позиции курсора. Вот прототипы функций getchar() и putchar():

int getchar(void); int putchar(int c);

Как видно из прототипа, считается, что функция getchar() возвращает целый результат. Однако возвращаемое значение можно присвоить переменной типа char, что обычно и делается, так как символ содержится в младшем байте (Старший байт при этом обычно обнулен). В случае ошибки getchar() возвращает EOF. (Макрос EOF определяется в <stdio.h> и часто равен -1).

Что же касается putchar(), то несмотря на то, что эта функция объявлена как принимающая целый параметр, она обычно вызывается с символьным аргументом. На самом деле из ее аргумента на экран выводится только младший байт. Функция putchar() возвращает записанный символ или, в случае ошибки, EOF.

В следующей программе продемонстрировано применение getchar() и putchar(). В этой программе с клавиатуры вводятся символы, а затем они отображаются на другом регистре. То есть символы, вводимые на верхнем регистре, выводятся на нижнем, а вводимые на нижнем — выводятся на верхнем. Чтобы остановить программу, введите точку.

#include <stdio.h>

#include <ctype.h>

 int main(void)

{   char ch;

  printf("Введите какой-нибудь текст

          (для завершения работы введите точку).\n");   do {

    ch = getchar();

     if(islower(ch)) ch = toupper(ch);     else ch = tolower(ch);

     putchar(ch);

  } while (ch != '.');

   return 0; }

(Эта программа не работает, правда, с кириллическими символами.)

Альтернативы getchar()

Так как getchar(), имеющаяся в библиотеке компилятора, может оказаться неподходящей в интерактивной среде, то для чтения символов с клавиатуры может потребоваться другая функция. В стандарте языка Си не определяется никаких функций, которые гарантировали бы интерактивный ввод, но их определения имеются буквально в библиотеках всех компиляторов Си. И пусть в стандарте Си эти функции не определены, но известны

Похожие материалы

Информация о работе