|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Файлы последовательного доступаТеоретические сведения При последовательном доступе обмен информации производится через специальный буфер, резервируемый системой ввода-вывода. Компиляция языка СИ рассматривает ввод-вывод как поток файлов, которые поступают последовательно, байт за байтом. Каждый поток связывается с файлом на магнитном диске или с файлом, который поставлен в соответствии физическому устройству, например клавиатуре. Связь потока с файлом устанавливается при его открытии. Открытие файла осуществляется функцией fopen. Данная функция возвращает указатель на файл. Указатель на файл необходимо объявлять, например: FILE * lst; Здесь FILE-имя типа, описанное в стандартном определении stdio. h; lst-указатель на файл (логическое имя). Обращение к функции fopen в программе производится так: lst= fopen (физическое имя файла, вид использования файла); Физическое имя файла может, например, быть “prn”-для устройства печати; “b:zni.f”-для файла zni.f на дискете b: Вид исполнения. Если файл открывается для записи или дополнения, но ещё не существует, то он создаётся. Открытие существующего файла для записи приводит к уничтожению его старого содержимого. Попытка прочитать несуществующий файл-это ошибка (fopen выдаёт указатель со значением NULL). Для работы с файлами используются библиотечные функции fprintf, fscanf, fgets, fputs. Их применение рассмотрим ниже на примерах. После окончания работы с файлом он должен быть закрыт. Это делается с помощью библиотечной функции fclose, например: fclose (lst) lst-указатель на файл; Рассмотрим организацию ввода информации на печатающее устройство: /*Работа с файлами (вывод на печатающее устройство)*/ #include<stdio.h> main () { int i = 150; FILE *lst; /*lst-указатель на файл (объект типа FILE)*/ lst= fopen (“prn”,”w”); /*lst получает адрес открытого файла с именем prn, предназначенного для записи в него информации (символ w); prn-стандартное имя устройства печати, информация из файла с адресом lst будет выводится на печатающее устройство*/ fprintf(lst,”\n число i = %d\n”,i); /*первый параметр функции fprintf-это указатель на соответствующий файл; на печать будет выведена строка: число i = 150*/ fclose (lst); /*функция fclose закрывает файл с указателем lst теперь ссылку lst можно использовать для другого файла */ Функция fprintf подобна функции printf и отличается от неё тем, что в качестве первого параметра использует указатель на соответствующий файл. Следующая программа показывает организацию вывода информации на дискету: /* Работа с файлами (запись информации в файл на дискету)*/ #include < stdio.h > main () { int i = 150 FILE *rsd; Rsd=fopen(“B:ZNI.F”,”r ”); /*второй параметр функции fopen-теперь “r ”,говорящий о чтении информации*/ fscanf(rsd,”%d”,&i); /*из файла ZNI.F(дискета В:) будет прочитано значение i*/ printf(“число i=%d(начальное значение i)\n”,i); while (fscanf(rsg,”%d”,&i)!=EOF) printf(“число i = %d\n,i”); /*последовательный вывод целых чисел из файла; вывод прекращается, когда будет достигнут конец файла(ЕОF)*/ fclose(rsd); } Первая функция fscanf обеспечивает чтение из файла B:ZNI.F значение целого числа i. Затем полученное значение выводится функцией printf на экран дисплея. Последующий фрагмент программы (начиная с оператора while) позволяет вывести другие целые числа из этого файла, если их там не более одного. После того как чисел в файле не остаётся, функция fscanf выдаёт особое значение EOF-признак конца файла. Его можно использовать для прекращения чтения информации. Добавим в файл ZNI.F новые данные: /*Работа с файлами (дополнение файла на дискете)*/ #include < stdio.h > main () { int c; FILE * lds; lds = fopen(“B:ZNI.F”,”a”); /*Второй параметр функции fopen – теперь “а”, говорящий о возможности дополнения файла*/ puts (“введите целое число”); scanf (“%d”,&c); fprintf (lds,”%d\n”,c); /*файл ZNI.F будет дополнен первым числом*/ fclose (lds); } В ответ на сообщение “введите целое число” необходимо ввести его, и файл добавится одним числом. Если необходимо добавить в файл несколько данных, можно организовать цикл. С началом работы любой программы автоматически открываются три файла, и для них определяются соответствующие указатели. Первый из них-это файл для стандартного ввода информации с клавиатуры с указателем stdin, второй – для стандартного вывода информации на экран дисплея с указателем stdout, третий – для стандартного вывода ошибок на экран дисплея с указателем stderr. Объекты stdin, stdout, stderr – константы, а не переменные, и им нельзя что-либо присваивать. Файл с указателем stderr обычно используется для хранения различных диагностических сообщений. Рассмотрим ввод и запись строк в файл. Продемонстрируем вывод информации в стандартный файл для ошибок: /*Работа с файлами (ввод и запись строк). Вывод информации в стандартный файл для ошибок*/. #include <stdio.h> main () { char str[50]; FILE *FL FL=fopen (“FAL.F”, “w”); puts (“Введите строку (до 49 символов)”); scanf (“%s”, str); fputs (str, FL); /* Функция fputs записывает в файл строку str*/ fprintf (stderr, “Демонстрация вывода в стандартный файл для ошибок ”); /* текст в функции fprintf будет выведен на экран*/ fclose (FL); FL=fopen (“FAL.F”, “r”); /* Файл открывается для чтения */ fgets (str, 20, FL); /* функция fgets считывает из файла FAL.F строку str, максимальная длина которой 20-1=19 (20- второй параметр fgets); получившаяся строка оканчивается символом ‘\0’*/ printf (“str = %s”, str); fclose (FL); } После запуска программы на выполнение необходимо ввести строку до 49 символов. На экране появится: Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |