У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа N 7

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.12.2024

Лабораторная работа N 7.

ИССЛЕДОВАНИЕ ОСОБЕННОСТЕЙ ПРИМЕНЕНИЯ ФАЙЛОВЫХ ОПЕРАЦИЙ В Си.

Цель работы – изучить особенности программирования типовых задач с использованием файловых операций в  языке Си

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

Существует два способа доступа к компонентам файла: последовательный и произвольный (параллельный). При последовательном способе доступа поиск начинается с начала файла и проверяется по очереди каждый компонент, пока не будет найден нужный. Произвольный способ доступа позволяет обращаться к компоненту по его порядковому номеру в файле. Допускается большая гибкость при работе с файлами. В частности, компоненты последовательного организованного файла могут обрабатываться произвольно, а компоненты произвольного файла – последовательно. Однако  с самого начала на основе анализа структуры данных следует выбрать, какой способ доступа к компонентам необходим, что в конечном итоге и определит эффективность программы.

Файлы последовательного доступа используются для решения задач, требующих поочередной обработки компонент файла при отсутствии жестких ограничений на время решения. Работа с последовательными файлами предполагает создание файла, его обработку и корректировку.

Для создания последовательного файла необходимо выполнить следующие шаги:

  •  Создать указатель на файл (FILE *file_pointer;)
  •  Открыть файл (pointer = fopen(“FILE_NAME”,”mode”))
  •  Подготовить информацию для ввода;
  •  Записать в файл компоненты (fputs(var, file_pointer))
  •  Закрыть созданный файл (fclose())

Пример. Создать файл с посимвольным вводом данных, который продолжается до тех пор, пока не нажата клавиша Enter

#include <stdio.h>

main()

{

FILE *fp;

Char letter;

If ((fp = fopen(“MYFILE.TXT”, “w”)) = = NULL)

{

puts(“Невозможно открыть файл”);

exit();

}

do

{letter = getc();

fputc(letter, fp);

}

while(letter != ‘\r’);

fclose(fp);

}

Чтобы обработать хранящиеся в файле данные, необходимо получить доступ к компонентам файла. Для этого надо:

  •  Создать указатель на файл ;
  •  Открыть уже существующий на диске файл
  •  Последовательно считать компоненты до нужного
  •  Выполнить обработку
  •  Закрыть файл

Пример. Программа читает файл созданный в предыдущем примере:

#include <stdio.h>

main()

{ FILE *fp;

Char letter;

If ((fp = fopen(“MYFILE.TXT”, “w”)) = = NULL)

{

puts(“Невозможно открыть файл”);

exit();

}

while ((letter = fgetc(fp)) != EOF)

//операторы выполняющие обработку

printf(“%c”, letter);

fclose(fp);

}

Функции, работающие с символами, предназначены только для чтения и записи текста. Если требуется записать или прочитать из файла, либо отпечатать на принтере данные, содержащие числовые значения, то необходимо использовать функции fprintf() и fscanf().  Для записи инструкций с этими функциями используется тот же синтаксис, что и для функций printf() и scanf(), но в этом случае требуется еще включить указатель на файл, чтобы определить, куда следует записать или откуда читать данные:

fprintf(FILE *Stream, control_string, data_list);

fscanf(FILE *Stream, control_string, data_list);

Для чтения структурированной информации из файла используется функция fread(). Синтаксис данной функции следующий:

unsigned fread( void Buf, int Size int Count FILE *Stream)

Выполнение функции fread() приводит к вводу из файла, идентифицируемого аргументом Stream, порции информации, местоположение Buf  и размер Count которой в оперативной памяти указан посредством Size. Результатом работы функции является величина со значениями, равным количеству вводимых объектов информации. Если данное количество меньше чем Count, то это означает наличие ошибки выполнения функции или ввод данных из файла, находящегося в конечной позиции.

Пример. Ниже приведены две программы, причем первая из них осуществляет ввод и запись в файл данных инвентарной описи, а вторая – считывает их.

Пример 1

#include <stdio.h>

main()

{

FILE *fp;

Char name[20];

Int quantity;

Float cost;

If ((fp = fopen(“MYFILE.TXT”, “w”)) = = NULL)

{

puts(“Невозможно открыть файл”);

exit();

}

printf(“Введите наименование товара :     ”);

gets(name);

fputc(letter, fp);

while (strlen(name) > 0)

{

printf(“Введите цену товара:      ”);

scanf(“%f, &cost”);

printf(“Введите количество единиц  товара:      ”);

scanf(“%d, &quantity”);

fprintf(fp, “%s  %f  %d  \n”, name, cost, quantity);

printf(“Введите наименование товара:  ”);

gets(name);

}

fclose(fp);

}

Пример 2

#include <stdio.h>

main()

{

FILE *fp;

Char name[20];

Int quantity;

Float cost;

If ((fp = fopen(“MYFILE.TXT”, “w”)) = = NULL)

{

puts(“Невозможно открыть файл”);

exit();

}

while (fscanf( fp, “%s %f %d”, name, &cost, &quantity) != EOF)

{

printf(“Наименование товара:    %s \n”, name);

printf(“Цена товара:      %2f \n”, cost);

printf(“Количество единиц  товара:      %d \n”, quantity);

}

fclose(fp);

}

Возможны три вида корректировки последовательного файла: расширение файла за счет внесения новых компонентов, полная замена содержимого записи и корректировка значений полей отдельных записей. Все три вида одинаково применимы и к последовательным, и к произвольным файлам.

Если файл, который уже существует на диске, открыть с режимом доступа “w”, вся информация, имевшаяся на нем в настоящий момент, будет уничтожена. Для того чтобы добавить данные в уже существующий на диске файл, следует открывать его с режимом доступа “a”. Если режим  ”a” используется для файла, которого нет на диске, он будет создан, а если файл существует, в него будет добавлена новая информация.

При расширении файла новые компоненты записываются сразу за его последним компонентом. Расширение файла предполагает выполнения следующих шагов:

  •  Создать указатель на файл (FILE *file_pointer;)
  •  Открыть файл (pointer = fopen(“FILE_NAME”,”mode”))
  •  Установить указатель файла за последним компонентом
  •  Подготовить информацию для ввода;
  •  Записать в файл компоненты (fputs(var, file_pointer))
  •  Закрыть созданный файл (fclose())

Файлы произвольного доступа создаются для решения задач, требующих оперативного доступа к хранимой информации или при наличии зависимости значений поля компонента от порядкового номера компонента в файле.

Работа с файлом произвольного доступа предполагает его организацию, обработку и корректировку.

Организовать файл произвольного доступа можно двумя способами: 1) создать последовательный файл и обращаться к его компонентам по их порядковому номеру, трактуя последовательный файл как произвольный; 2) создать файл фиктивных записей, затем загрузить его по ключу фактическими данными.

Певый способ аналогичен созданию последовательного файла, а форматизация заключается во внесении в файл компонентов, значение полей которых носит фиктивный характер (например, нули или пробелы)

Задание на работу  Выполнить демонстрационные программы и сделать выводы письменно.

  •  Организовать последовательный файл с именем BIBL.MY на дисководе. Структура записи следующая: порядковый номер книги; название книги; индекс книги. Блок организации оформить функцией с именем Org. Значение полей ввести с экрана. Признак окончания ввода – 9999 в области номера. Сохранить текст программы на диске с именем PSozd.
  •  Расширить файл BIBL.MY двумя новыми компонентами, для чего написать фунцию с именем Korr. Сохранить текст на диске под именем PKorr.
  •  Форматизовать файл произвольного доступа из 20 записей на дисководе. Формат компонентов такой же как и предыдущих заданиях. Оформить блок как фунцию с именем Form и сохранить программу под именем NForm.
  •  Внести  в файл BIBL.MY фактические записи с номерами 3, 5, 7. Оформить блок загрузки функцией с именем Zagrk1, а текст программы сохранить на диске под именем NZagrk1.
  •  Вывести на экран 6 и 7 компоненты файла BIBL.MY. Блок вывода оформить в виде функции с именем Obrk1, а сохранить на диске под именем  NObrk1
  •  Все функции работы с файлами объединить в одной программе. Причем создать простейшее меню, которое будет вызывать функции путем указания номера нужного режима в меню. После выполнения функции осуществляется возврат в основную программу. Выход из программы осуществляется отдельным режимом заданным пунктом меню.

Порядок выполнения работы

  1.  Выполнить следующие демонстрационные программы
  2.  Написать программу
  3.  Сделать выводы




1. Курсовая работа- Передаточные механизмы в технологических машина
2. как фреймы и JvScript могут работать вместе
3. Регистрация в верхнем правом углу
4. Демография Китая
5. Анализ историко-культурного и природно-рекреационного потенциала Орехово-Зуевского района Московской области
6.  Фирма планировала в текущем году увеличить оборот на 145
7. синтетическую деятельность мозга
8. тематичних наук Дніпропетровськ 2004 Дисертація є рукопис Робота виконана у Дніпропе.html
9. Тема- Темперамент и характер
10. ТЕМА- Загальні питання теорії історії та методики кримінології Мета заняття- освітня- формування у
11. Лекция 11. СТРУКТУРА ПОДГОТОВЛЕННОСТИ СПОРТСМЕНОВ СТОРОНЫ ПОДГОТОВЛЕННОСТИ ОПРЕДЕЛЯЮЩИЕ УРОВЕНЬ СПОРТИВНЫ
12. Электроснабжение населенного пункта
13. НА ТЕМУ Ценовая политика предприятия
14. А ’2 Черновое точение с Ф70 до Ф63.html
15. Тема- Миф Мифология
16. я і жива маса ВРХ на початок планового року Статевовікові групи
17. задание макс
18. Меркантилизм - первая система экономических воззрений
19. Пьер Бомарше
20. Тема- Разложение феодализма и генезис капитализма в западной Европе в XVI последней трети XVIII в