Задача на определение количесва строк в тексте

Дан текст произвольной длины оканчивающийся символом '#'. Определить количество строк в тесте, каждая строка заканчивается символом перевода строки '\n'. Задача решается поиском символа '#' в цикле while. Можно решить и многими более простыми методами, но условия задачи таковы.

В решении используется генератор текста. Но вы можете получить текст из других источников. Например из файла.

#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

//	Generate string

char * genstr(unsigned int len) {
	// Хотите повесить комп? сгенерируйте строку длиной, равной количеству байт оперативной памяти системы.
	char chars[] = {'0','1','2','3','4',
		    '5','6','7','8','9',
		    'A','B','C','D','E','F',
		    'G','H','I','J','K',
		    'L','M','N','O','P',
		    'Q','R','S','T','U',
		    'V','W','X','Y','Z',
		    'a','b','c','d','e','f',
		    'g','h','i','j','k',
		    'l','m','n','o','p',
		    'q','r','s','t','u',
		    'v','w','x','y','z', '\n', ' ',
		    '#'
		    };

	char * str = new char [len];
	for (unsigned int ix = 0; ix < len; ++ix){
        // Первую половину текста мы генерируем без решетки,
        // так как велика вероятность постоянно получать текст с решеткой уже в первой строке.
        // Проверено опытным путем.
		if (ix < len / 2)
			str[ix] = chars[rand() % sizeof(chars) - 1];
		else
			str[ix] = chars[rand() % sizeof(chars)];
	}

	return str;
}

int main(int argc, char **argv) {
	setlocale(LC_ALL, "rus");
	unsigned int X, lines_count = 1, ix = 0;
	cout << "Введите длину текста, который необходимо сгенерировать: ";
	cin >> X;

	char * str = genstr(X);

	cout << "Сгенерированная строка:" << endl << str << endl;

    // Ищем '#'
	while (str[ix] != '#') {
        // Если на пути встречаем '\n', то увеличиваем результат на 1
		if (str[ix] == '\n') {
			cout << lines_count << endl;
			lines_count++;
		}
		ix++;
	}

	cout << "Количество строк в тексте: " << lines_count << endl;

    system("PAUSE");
	return 0;
}