Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ_ПО_ПРОГРАММИРОВАНИЮ_ПРЕПОД_3403_220301.doc
Скачиваний:
27
Добавлен:
06.11.2018
Размер:
845.31 Кб
Скачать

9.4 Подсчет символов, вводимых с клавиатуры.

/* ПРОГРАММА:

count_ch.c – подсчет символов, вводимых с клавиатуры.

*/

/*#############################################*/

/*============================= include */

#include<stdio.h>

/*============================= define */

#define STOP *

/*============================= main() */

main()

{/*.---------------------------.begin main() */

char ch;

int count =0; /* инициализация счетчика символов 0 */

while ((ch = getchar())!= STOP)

{/*.---------------------------.begin while */

putchar (ch);

count++; /* прибавить 1 к счетчику */

}/*.---------------------------.end while */

printf (" \n Всего было прочитано %d символов \n ' , count);

return 0;

}/*.---------------------------.end main() */

/*#############################################*/

РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ.

Подсчитанное число введенных символов

ПОЯСНЕНИЯ К ПРОГРАММЕ.

  • Если мы хотим просто подсчитывать число введенных символов без отображения их на экране, функцию putchar() можно опустить.

  • Если переопределить признак STOP на #define STOP '\n' программа закончит работу при введении одной строки, т.к. символ новая стрoка '\n' пересылается при нажатии клавиши [ввод] и подсчитает число символов в этой строке. Символ новая стрoка '\n' подсчитан не будет.

***************************************************************

9.5 Вывод символов из вводимого с клавиатуры файла.

Файлом называется участок памяти, в который помещена некоторая информация.

Обычно файл хранится в некоторой долговременной памяти, например на гибких или жестких дисках или на магнитной ленте. Чтобы отмечать, где кончается один файл и начинается другой, надо иметь специальный символ EOF (End-of-File), указывающий на конец файла. Это должен быть символ, который не может появиться где-нибудь в середине файла, точно так же как выше нам требовался символ, обычно не встречающийся во вводимом тексте (* или \n).

Выбор конкретного признака EOF зависит от типа системы. Признак EOF может состоять даже из нескольких символов. Такой признак всегда существует и компилятор с языка Си его знает. Общеупотребительным является определение #define EOF (-1). Это определение обычно содержится в файле stdio.h.

Если в программе get_stop_put_1 условие выполнения цикла задать в виде while ((ch=getchar())!= EOF), то эта программа закончит работу только при полном введении с клавиатуры текстового файла.

/* ПРОГРАММА:

get_put_file.c - ввод символов с клавиатуры до завершающего файл символа EOF и вывод символов, содержащихся в этом файле на экран дисплея.

*/

/*#############################################*/

/*============================= include */

#include<stdio.h>

/*============================= main() */

main()

{/*.---------------------------.begin main() */

int ch;

while ((ch = getchar())! = EOF) putchar (ch);

return 0;

}/*.---------------------------.end main() */

/*#############################################*/

РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ.

Вывод символов, содержащихся в файле на экран дисплея.

ПОЯСНЕНИЯ К ПРОГРАММЕ.

  • Не нужно самим определять признак EOF, поскольку заботу об этом берет на себя файл stdio.h.

  • Можно не интересоваться фактическим значением символа EOF, поскольку директива #define, имеющаяся в файле stdio.h, позволяет использовать его символическое представление.

  • Мы изменили тип переменной ch с char на int. Мы поступили так потому, что значениями переменных типа char являются целые числа без знака в диапазоне от 0 до 255, a признак EOF может иметь числовое значение -1. Эта величина недопустима для переменной типа char, но вполне подходит для переменной типа int. Функция getchar() возвращает значение типа int, поэтому она в состоянии прочесть символ EOF.

  • Переменная ch целого типа никак не влияет на работу функции putchar(). Эта функция просто выводит на печать символьный эквивалент значения аргумента.

  • При работе с данной программой, когда символы вводятся с клавиатуры, необходимо уметь вводить признак EOF. He думайте, что можно просто указать буквы E-О-F или число -1. Для этой цели обычно используется комбинация клавиш [CTRL/z].

***************************************************************