Работа с текстовыми файлами
⇐ ПредыдущаяСтр 20 из 20 Файлы бывают текстовые (в которых можно записывать только буквы, цифры, скобки и т.п.) и двоичные (в которых могут храниться любые символы из таблицы). В текстовых файлах не употребляются первые 31 символ кодовой таблицы ASCII (управляющие), а символы конца строки 0x13 (возврат каретки, CR) и 0x10 (перевод строки LF) преобразуются при вводе в одиночный символ перевода строки \n (при выводе выполняется обратное преобразование). Эти символы добавляются в конце каждой строки, записываемой в текстовый файл. При обнаружении в текстовом файле символа с кодом 26 (0x26), т.е. признака конца файла, чтение файла в текстовом режиме заканчивается, хотя файл может иметь продолжение. Создать текстовый файл можно с помощью текстового редактора и с помощью программы. Рассмотрим пример создания текстового файла. Следующая программа записывает в файл строку из 65 символов, а затем переписывает в другой файл только английские буквы. #include "stdafx.h" #include <string.h> int main() { FILE *f, *r; // Указатели на файлы char ch, pr[65]; char text[]="1,2,3,4,5 i caught a fish alive, 6,7,8,9,10 i let it go again!";
f=fopen("FIL1.txt","w"); // Создание нового файла FIL1.txt fputs(text,f); // Запись в файл строки text fclose(f); // Закрытие файла f f=fopen("FIL1.txt","r"); // Открытие файла f для чтения r=fopen("FIL2.txt","w"); // Создание нового файла FIL2.txt while (!feof(f)) // Пока не конец файла { ch=fgetc(f); // Чтение символа ch из файла f if (ch >='a'&&ch<='z') // Прочитанный символ - буква? fputc(ch,r); // Запись в файл r символа ch } fclose(r); // Закрытие файла r rewind(f); // Возврат указателя на начало файла f fgets(pr,65,f); // Чтение из файла f строки в переменную pr printf("%s\n",pr); // Вывод строки pr на дисплей r=fopen("FIL2.txt","r"); // Открытие файла r для чтения
while (!feof(r)) // Пока не конец файла pr { ch=fgetc(r); // Чтение символа из файла r putchar(ch); // Вывод символа ch на дисплей } printf("\n"); fclose(f); // Закрытие файлов fclose(r); return 0; } Обработка бинарных файлов Если файл открыт в бинарном режиме, его можно записывать или считывать побайтно. Функция fseek() позволяет обращаться с бинарным файлом как с массивом и переходить к любой позиции в файле, обеспечивая возможность произвольного доступа. Если текстовые файлы являются файлами с последовательным доступом, то к бинарным файлам может применяться произвольный доступ. Составим программу создания нового файла с информацией о городах: код, название, численность жителей.
#include "stdafx.h" #include <conio.h> typedef struct city { int kod; char name[10]; long c; } town; town t; int main() { char c; FILE *f; char ch; f=fopen("file1.dat","wb"); //открытие бинарного файла для записи printf("\n Ввод информации о городе "); do { printf("\nКод: "); scanf("%d", &t.kod); printf("\nназвание: "); scanf("%s", t.name); printf("\nколичество жителей: "); scanf("%ld", &t.c); fwrite(&t, sizeof(t), 1, f); //запись в файл одной структуры t printf("\n END Закончить? y/n "); ch=getch(); } while (ch!= 'y'); fclose(f); } Выполнение этой программы приведет к созданию бинарного файла с информацией о городах. Рассмотрим еще одну программу, которая будет читать из файла информацию о городах и выводить на экран список городов, количество жителей в которых превышает миллион. #include "stdafx.h" #include <conio.h> typedef struct city { int kod; char name[10]; long c; } town; town t; int main() { FILE *f; f=fopen("file1.dat","rb"); //открытие бинарного файла для чтения fread(&t, sizeof(t), 1, f); //чтение из файла одной структуры t while (!feof(f)) { if(t.c>1000000) printf("\n%3d название: %10s количество жителей: %ld", t.kod, t.name, t.c); fread(&t, sizeof(t), 1, f); } fclose(f); }
Контрольные задания Составить программу решения задачи с использованием файла данных и выполнить ее на ПК.
Заключение
Система программирования С++ - мощная профессиональная система, предназначенная для решения задач любой сложности - от создания простых программ вычислительного характерадо разработки сложных систем управления базами данных. Данное учебное пособие рассчитано на изучение основных приемов программирования и отладки программ на языке С++. В главах учебного пособия рассматривается язык С++. Изложение ведется от простого к сложному, что позволяет обучающимся решать простейшие вычислительные задачи и постепенно переходить к разработке программ с использованием текстовых и файловых данных. В учебном пособии приводится достаточное число различных примеров программирования, облегчающих понимание отдельных разделов языка С++.
Оглавление
1. Основы алгоритмизации и программирования. 4 1.1. Этапы подготовки и решения задач на ЭВМ.. 4 1.2. Алгоритмы и способы их описания. 6 1.3. Компиляция и интерпретация программ. 13 1.4. Стили программирования. 14 2. Основы алгоритмического языка С++. 23 2.1. Пример готовой программы. 23 2.2. Структура основной программы.. 25 2.3. Алфавит языка. 27 2.4. Константы и переменные. 27 2.5. Арифметические выражения. 30
2.6. Линейные вычислительные процессы.. 37 2.7. Разветвляющиеся вычислительные процессы.. 51 2.8. Циклические вычислительные процессы.. 65 2.9. Базовые алгоритмы.. 71 2.10. Указатели и массивы.. 78 2.11. Подпрограммы.. 97 2.12. Текстовые данные. 109 2.13. Динамическое выделение памяти. 119 2.14. Структуры данных. 124 2.15. Файлы данных. 130 Заключение. 143
СПИСОК ДОПОЛНИТЕЛЬНОЙ ЛИТЕРАТУРЫ 1. Голицына О.Л. Основы алгоритмизации и программирования. М.: Форум. 2008.- 431с. 2. М. С. Эпштейн. Практикум по программированию на языке С. М.: Академия, 2007, -102с. 3. Г. Шилдт. Полный справочник по C++. М.: Вильямс, 2006,- 217с. 4. Стенли Липпман, Жози Лажойе, Барбара Му. Вводный курса стандартного языка C++. М.: Вильямс, 2007,- 892с. 5. http://256bit.ru/informat/index11.htm
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|