Шаг 21.
Microsoft Visual C++ 2010. Язык С/С++. Программы для работы с символьными данными. Подсчет количества строк в файле

    На этом шаге мы рассмотрим особенности такой программы.

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

// Count_String.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, nl=0;

	printf("Задайте строку и нажмите Enter, Ctrl + Z для завершения ввода >\n"); 
	while((c=getchar()) != eof) 
		if(c == '\n')
			nl++;
	
	printf("Количество строк: %d\n",nl);

	_getch();  /*вводит символ, но без эхо-сопровождения 
			   (для организации задержки экрана) */
    return 0;
}
Архив проекта можно взять здесь.

    Здесь новое по сравнению с предыдущими подобными программами только то, что появилась операция == (равно) и новая управляющая конструкция if - это конструкция условного перехода, изменяющяя последовательное (сверху вниз) выполнение операторов программы в зависимости от истинности/ложности условия (оно записывается в круглых скобках в заголовочной части условной конструкции и может представлять собой выражение).

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

    Программа работает так: обнуляется счетчик количества вводимых строк (nl), начинает выполняться цикл while, обеспечивающий ввод с клавиатуры потока символов (вычисляется, как обычно, выражение в заголовочной части while, чтобы проверить условие на истинность/ложность, что требует нового ввода символа). Среди потока символов встречаются символы \n, сигнализирующие об окончании строки. Как только такой символ обнаруживается с помощью условной конструкции if, в счетчик nl, расположенный в теле if, добавляется единица. Когда после последней строки, завершающейся символом \n, мы нажмем комбинацию клавиш Ctrl+Z (символ конца ввода), ввод строк завершится. Условие выполнения конструкции while нарушится, и управление будет передано на оператор, следующий за ее телом. Это будет оператор вывода printf(). Результат работы программы представлен на рисунке 1.


Рис.1. Результат работы программы

    На следующем шаге мы рассмотрим подсчет количества слов в файле.




Предыдущий шаг Содержание Следующий шаг