На этом шаге мы приведем модификацию программы из педыдущего шага.
Ранее мы познакомились с правилом, когда вместо переменной некоторого типа можно использовать и выражение этого же типа. Воспользуемся этой возможностью и запишем нашу программу в другом виде:
// Copy_2.cpp: главный файл проекта. #include "stdafx.h" #include <clocale> //обязательно для функции setlocale() using namespace System; #include <conio.h> // для getch() #include <stdio.h> // для getchar(), putchar(), printf() #define eof -1 // признак конца файла Ctrl+Z int main() { setlocale(LC_ALL,"Russian"); //функция setlocale() с аргументами //для корректного вывода кириллицы int c; printf("Задайте строку>\n"); while((c=getchar())!= eof) { putchar(c); } _getch(); /*вводит символ, но без эхо-сопровождения (для организации задержки экрана) */ return 0; }
Ввод символа мы внесли в заголовочную часть while, поскольку c=getchar() - это выражение того же типа, что и с. Конструкция цикла while в общем случае работает так: он сначала вычисляет выражение, которое находится в его заголовочной части, при этом выполняется ввод символа с клавиатуры, что нам и нужно. Затем конструкция while проверяет, не являются ли введенные символы признаком конца файла. Так как, в отличие от предыдущего варианта, тело цикла while состоит только из одного оператора putchar (с), то фигурные скобки можно опустить. После того как выполнится putchar (с), управление будет передано в заголовочную часть while, где снова начнется вычисление выражения, которое, в свою очередь, потребует ввода символа с клавиатуры и т. д.
На следующем шаге мы рассмотрим программу, выполняющую подсчет символов в файле.