В двоичных файлах у вас (обычно) фиксированная длина записи.В текстовых файлах одна возможность состоит в том, чтобы рассматривать текстовую строку как запись, в которой вы разделяете содержимое файла.К сожалению, строки не имеют фиксированного размера в обычных текстовых файлах, поэтому вы не можете полагаться на формулу, такую как:
lastTenthLine = ( LengthOfFile / LengthOfLine ) - 10;
Единственный способ, о котором я могу думать, это переместить указатель чтения в конецфайл.Начните читать задом наперед, по одному символу каждый раз, и посчитайте, сколько раз вы проходите над символом '\ n'.После того, как вы посчитали десять раз, вы можете вернуть следующую позицию символа.
(Обратите внимание, что у вас могут возникнуть «проблемы с конечной строкой» в зависимости от происхождения (ОС) файлов, которые вы используете в качестве примераПоскольку вы используете MFC, у вас не возникнет никаких проблем, если используемые файлы были сгенерированы в Windows)
Поскольку я предполагаю, что это домашняя работа, я не буду публиковать код.У вас есть документация по MFC, объясняющая, как обращаться с файлами.Вам нужны методы CFile::Read
и CFile::Seek
(кроме Open и Close).Обратите внимание, что CFile
является родительским классом CStdioClass
.
http://msdn.microsoft.com/en-us/library/ey6xh9bk(v=vs.80).aspx
Надеюсь, это поможет.