Требуется из файла file.txt прочитать текст. Содержимое файла ...
Если требуется именно алгоритм. С++ уже не помню, да и времени сейчас не будет конкретную прогу писать.
1. исхожу из того, что
а. нам кто-то дал этот текстовик.
б. текстовик меняется нечасто. как база данных - он есть, а несколько пользователей запрашивают то одно слово, то другое.
2. для облегчения будущих поисков его лучше проиндексировать. Сделать промежуточный файл, в котором будут адреса начал абзацев и ключевое слово. Можно его для простоты (я не считаю что это оптимально, чисто для начала) сделать в формате -
слово1
адрес1
слово2
адрес2
итп...
Заполняется по простому алгоритму -
а. открываешь file.txt в байтовом режиме
б. проверяешь какой конец строки у тебя - односимвольный (\n) или двухсимвольный (\r\n). Если формат оговорен в условии - то не проверяешь...
в. читаешь ключевое слово-строку. пишешь его в индекс-файл без символов конца строки. берешь адрес начала следующей строки (убей не помню как функция называлась, которая возвращаеь текущую позицию в файле), пишешь в тот же индексфайл.
г. читаешь файл пока не будет пустая строка (подряд два символа конца строки, или четыре в зависимости от пункта б).
и в цикле в-г создаешь индекс - чтобы в будущем не просматривать весь исходный файл.
В конце еснно - сохранить файл
И потом основная прога - открывает индекс-файл, читает его (для простоты - в двумерный массив).
Пользователь вводит слово поиска - прога просматривает массив, есть ли такое слово. Если есть - берет соответствующий адрес (который тоже прочитан из того индекса), открывает исходный file.txt, переводит курсор файла (функция fseek, что ли) на соотв. адрес, читает байты пока не найдет конец абзаца (как в предыдущем случае, два конца строки подряд).
Эти байты и будут нужным текстом. Само слово у нас есть из индекса, текст мы прочитали - выводим его и все.
Если исходный file.txt меняется часто (каждый раз), то индекс будет неэффективен, тут просто построчно ищем слово и потом выводим все до пустой строки.
Также для начала можно сделать именно этот простой вариант, просто чтобы попробовать сами функции ввода-вывода. Потом уже, в будущем, заморачиваться индексом итп
п.с. поскольку чтение в байтовом режиме - то делается через буферный массив, типа char[1024], или ещё больше. Прочитал - обрабатываешь проверками посимвольно, конец строки там, или нет.