Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаФИН kosh.doc
Скачиваний:
29
Добавлен:
15.02.2016
Размер:
3.16 Mб
Скачать

6.2. Открытие и считывание файла. Нахождение строк, содержащих цифры. Запись нового файла

Создадим диалоговое приложение, которое открывает файл, считывает его и выводит содержимое файла на экран. Имя файла задается в отдельном диалоговом окне для открытия файлов. Найдем строки, содержащие цифры, и только их запишем в новый файл. Новый файл создается в том же каталоге, что и открытый для чтения. Имя нового файла составляется следующим образом: Имя старого файла + «New».

Создайте диалоговое приложение, разместив в главном диалоговом окне элементы управления так, как показано на рис. 82.

Рис. 82 Окончательный вид главного диалогового окна

Кнопка «Выход» - это «стандартная» кнопка Cancel, однако у нее мы изменили название. С текстовым полем для вывода содержимого файла свяжите переменную sFromFile типа CString. С полем для вывода строк, подлежащих записи, свяжите переменную сForFile типа CString. Добавьте в класс СВашаФамилияDlg глобальные переменные file, file2 типа CStdioFile с типом доступа public. С кнопкой «Открыть файл» свяжите обработчик события нажатия на кнопку.

Измените код обработчика события так, как показано ниже:

void CSolushkovDlg::OnBnClickedButton1()

{

UpdateData(true);

//строка для чтения файла по строкам

CString sTmp;

//строка для поиска цифр в считанных строках

CString sNumStr = "0123456789";

//инициализируем переменные

sTmp.Empty(); cForFile.Empty();

static char cFilter[] = "Text Files(*.txt; *.dat)|*.txt; *.dat|HeaderFiles(*.h)|*.h|SourceFiles(*.cpp)|*.cpp|AllFiles(*.*)";

CFileDialog dlgf(true, " ", "*.txt", OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, cFilter);

if (dlgf.DoModal()==IDOK)

{

CString name = dlgf.GetPathName();

//формируем имя файла для записи

//берем имя старого файла без расширения

CString name2 = name.Left(name.GetLength() - 4);

//добавляем к нему слово New

name2 += "New";

//создаваемый файл будет иметь то же расширение, что и открытый

name2 += name.Right(4);

BOOL flag;

if (file.m_pStream) {file.Close();}

file2.Open(name2, CFile::modeCreate);

file2.Close();

if (file.Open(name, CFile::modeRead) && file2.Open(name2, CFile::modeWrite))

{

do

{

flag = file.ReadString(sTmp);

//если в строке содержатся цифры

if(sTmp.FindOneOf(sNumStr)!=-1)

{

//выводим ее на экран для показания того, что будет записано

cForFile += sTmp;

//записываем найденные строки в файл

file2.SeekToEnd();

file2.WriteString(sTmp);

file2.WriteString("\n");

}

//выводим содержимое открытого файла на экран

sFromFile += sTmp;

} while(flag);

}

}

//закрываем файлы после работы с ними

file2.Close();

file.Close();

UpdateData(false);

}

Задания для самостоятельного выполнения

  1. Создать диалоговое приложение, которое счи­ты­вает текст из файла, выводит его на экран и подсчитывает, сколь­ко раз заданный символ содержится в тексте. Имя файла должно считываться с помощью специального диалогового окна для открытия файлов.

  2. Создать диалоговое приложение, которое считы­вает текст из файла, выводит его на экран и подсчитывает, сколь­ко раз заданное слово содержится в тексте. Имя файла должно считываться с помощью специального диалогового окна для открытия файлов.

  3. Создать диалоговое приложение, которое считы­вает текст из файла и выводит его на экран, выравнивая длину каждой строки до заданной. Имя файла должно считываться с помощью специального диалогового окна для открытия файлов.

  4. Создать диалоговое приложение, которое считы­вает текст из файла и выводит его на экран, затем выводит на экран первые n символов этого файла. Имя файла должно считываться с помощью специального диалогового окна для открытия файлов.

  5. Создать диалоговое приложение, которое считы­вает текст из файла и выводит его на экран, затем выводит на экран первые n слов этого файла. Имя файла должно считываться с помощью специального диалогового окна для открытия файлов.

  6. Создать диалоговое приложение, которое считы­вает текст из файла и выводит его на экран, затем выводит на экран первые n строк этого файла. Имя файла должно считываться с помощью специального диалогового окна для открытия файлов.

  7. Создать диалоговое приложение, которое считы­вает текст из файла и выводит его на экран, затем выводит на экран первые n символов каждой строки. Имя файла должно считываться с помощью специального диалогового окна для открытия файлов.

  8. Создать диалоговое приложение, которое считы­вает текст из файла и выводит его на экран, затем выводит на экран те строки, ко­то­рые начи­наются с заданной последовательности символов. Имя файла должно считываться с помощью специ­ального диалогового окна для открытия файлов.

  9. Создать диалоговое приложение, которое счи­ты­­вает текст из файла и выводит его на экран, затем выводит на экран первые n слов каж­дой строки. Если в строке меньше слов, то выводится вся строка. Имя файла должно считываться с помощью специального диалогового окна для открытия файлов.

  10. Создать диалоговое приложение, которое счи­тывает текст из файла и выводит его на экран, затем выводит на экран те строки, которые за­кан­чиваются заданной последовательностью символов. Имя файла должно считываться с помощью специ­ального диалогового окна для открытия файлов.

  11. Создать диалоговое приложение, которое счи­тывает текст из файла и выводит его на экран, затем выводит на экран те слова, которые начи­наются на заданную последовательность символов. Имя файла должно считываться с помощью специ­ального диалогового окна для открытия файлов.

  12. Создать диалоговое приложение, которое считывает текст из файла и выводит его на экран, затем выводит на экран те слова, которые содержат заданную последовательность символов. Имя файла должно считываться с помощью специ­ального диалогового окна для открытия файлов.

  13. Создать диалоговое приложение, которое счи­тывает текст из файла и выводит его на экран, затем выводит на экран те слова, которые за­канчиваются заданной последовательностью символов. Имя файла должно считываться с помощью специ­ального диалогового окна для открытия файлов.

  14. Создать диалоговое приложение, которое считывает текст из файла и выводит его на экран, затем выводит на экран те слова, длина которых равна заданной. Имя файла должно считываться с помощью специального диалогового окна для открытия файлов.

  15. Создать диалоговое приложение, которое считывает текст из файла и выводит его на экран, затем повторно выводит на экран текст из файла, вставляя после заданного символа пробел, если он еще не стоит там. Имя файла должно считываться с помощью специального диалогового окна для открытия файлов.

  16. Создать диалоговое приложение, которое счи­тывает текст из файла и выводит его на экран, затем повторно выводит его на экран, удаляя перед заданным символом пробелы, если они стоят там. Имя файла должно считываться с помощью специального диалогового окна для открытия файлов.