2. Задание на лабораторную работу Необходимо обработать текстовый файл. В первой строке файла указано общее число строк. Выделить память под массив указателей на строки, ввести текст построчно, динамически выделяя память для хранения каждой строки и записывая указатель в массив. Вывести на экран исходный текст. Выполнить один из вариантов обработки текста. Программа реализуется на языках C или Pascal в соответствии с указанием преподавателя.
3. Язык программирования C Динамическое выделение памяти Данные, которые создаются, инициализируются и уничтожаются по требованию программиста называются динамическими. Для управления такими данными используются специальные стандартные функции, прототипы которых описаны в заголовочном файле <malloc.h> (для некоторых компиляторов <alloc.h>). Для запроса динамической памяти служит функция malloc(), которая имеет следующий прототип: void * malloc(size_t size);
4. Типичная последовательность действий при работе с динамической памятью: double *A; int n; ... n = 200; ... A = (double *) malloc( n * sizeof(double) ); ... /* Работа с массивом A */ ... free ( A );
5. Работа с файлами Файл – это поименованная область на диске, содержащая какую-либо информацию, например, текст программы, данные для программы, документ. Файлы бывают текстовые и двоичные (бинарные).
6. Работа с файлами Текстовые файлы – это файлы, которые создаются или которые можно просмотреть с помощью текстовых редакторов. В операционной системе MS DOS текстовые файлы представляют собой последовательность символьных строк. Каждый символ занимает один байт. Строка заканчивается двумя символами: «возврат каретки» (с кодом 13) и «перевод строки» (с кодом 10).
7. Работа с файлами Двоичные файлы содержат информацию во внутреннем представлении. Примером двоичного файла является exe -файл, содержащий программу в машинных командах. Прикладная программа тоже может создать двоичный файл, записав в него данные в том виде, в каком они хранятся в памяти (к примеру, типа int ).
8. Для чтения информации из файла служат функции: fscanf () – форматированный ввод, fgets () – чтение одной строки, fgetc () – чтение одного символа, fread () – ввод заданного числа байтов (символов). Для записи информации в файл используются функции: fprintf () – форматированный вывод, fputs () – вывод строки, fputc () – вывод одного символа, fwrite () – вывод заданного числа байтов (символов).
9. Некоторые функции доступа к файлам fopen – открытие файла. Прототип функции: FILE * fopen (char * fname, char * mode); Первый параметр fname задает имя открываемого файла, второй – режим открытия файла или вид его обработки. Параметр mode может задаваться в виде: “ r ” – чтение файла, “ w ” – запись в файл (если файл существует, он стирается), “ a ” – добавление информации в конец файла, “ r +” – чтение и запись.
10. Пример FILE *fout, *fmod; /* указатели на выходной и модифицируемый файлы */ char fname[13]; /* имя модифиц. файла */ fout = fopen (“f1.txt”, “w”); puts(“Введите имя модифицируемого файла”); gets (fname); if ((fmod = fopen(fname, “r+”) ==NULL) { puts (“Файл в текущем каталоге не найден”); exit (1); }