- •Предисловие.
- •1. Введение.
- •1.1. История создания языка си.
- •1.2. Стандарты языка си.
- •2. Основные сведения, необходимые для создания программ на языке си.
- •2.1 Процесс создания исполняемого файла.
- •2.2 Распределение памяти программы.
- •2.3 Некоторые основные понятия.
- •2.4 Данные.
- •2.5 Структура простой программы.
- •3. Определение размеров типов данных и объектов.
- •4. Строки и строковые константы.
- •5. Директива препроцессора # define.
- •6. Функции форматированного ввода – вывода.
- •6.1 Функция форматированного вывода printf().
- •6.2 Функция форматированного ввода scanf().
- •7. Операции и операторы.
- •7.1 Арифметические операции
- •7.4 Порядок выполнения операций.
- •8. Выражения и операторы
- •8.1 Выражения.
- •8.2 Операторы.
- •8.3 Составные операторы.
- •8.4 Преобразование типов.
- •8.5 Операция приведения типов.
- •9. Функции ввода и вывода символов.
- •9.1 Функции getchar() и putchar().
- •9.2 Функции getch() и getche().
- •9.3 Ввод и вывод последовательности символов.
- •9.4 Подсчет символов, вводимых с клавиатуры.
- •9.5 Вывод символов из вводимого с клавиатуры файла.
- •9.6 Переключение ввода-вывода данных.
- •10. Принятие решений.
- •10.1 Оператор если (if).
- •10.2 Оператор если - иначе (if else).
- •10.3 Множественный выбор на основе операторов if, else.
- •10.5 Приоритеты операций отношения.
- •10.6 Логические операции (and, or, not).
- •10.7 Операция условия ?:.
- •10.8 Множественный выбор на основе операторов switch, break, default.
- •11. Циклы.
- •11.1 Цикл пока (while).
- •11.2 Цикл для (for).
- •11.4 Операция запятая ,.
- •11.5 Цикл делай пока (do while).
- •11.6 Вложенные циклы.
- •11.7 Операторы выход из структуры (break), продолжение (continue), безусловный переход (to go).
- •Литература.
- •Оглавление.
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].
***************************************************************