Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Краткие теоретические сведения. Специальные функции обмена с файлами имеются только для символьного и целого типов данныхСпециальные функции обмена с файлами имеются только для символьного и целого типов данных. В общем случае используются функции чтения и записи блоков данных. С их помощью можно записывать в файл и читать из файла вещественные числа, массивы, строки, структуры. При этом сохраняется форма внутреннего представления данных. Функция записи блока данных имеет прототип int fread(void*buf, int bytes, int n, FILE*fptr); Здесь buf – указатель на адрес данных, записываемых в файл; bytes – длина в байтах одной единицы записи (блока данных); n – число блоков, передаваемых в файл; fptr – указатель на поток. Если запись выполнилась благополучно, то функция возвращает число записанных блоков (значение n). Функция чтения блока данных из файла имеет прототип int fwrite(void*buf, int bytes, int n, FILE*fptr); Пример 4. следующая программа организует запись блоков в файл строки (символьного массива), а также чтение и вывод на экран записанной информации. # include <stdio.h> # include <string.h> void main() { FILE *stream; char msg[ ]=”this is a test”; char buf[20]; if ((stream=fopen(“DUMMY.FILL”,”w+”))==NULL) {puts(“Не могу открыть файл \n”); return;} // Запись строки в файл fwrite(msg, strlen(msg)+1, 1, stream); // Установка указателя на начало файла fseek(stream, 0, SEEK_SET); // Чтение строки из файла fread(buf, strlen(msg)+1, 1, stream); printf(“%s \n”,buf); fclose(stream); } В этой программе поток открывается в режиме w+ (создание для записи с последующим чтением). Поэтому закрывать файл после записи не потребовалось. Новым элементом данной программы по сравнению с предыдущими является использование функции установки указателя потока в заданную позицию. Ее формат int fseek(указатель_на поток, смещение, начало_отсчета); Начало отсчета задается одной из констант, определенных в файле stdio.h: SEEK_SET (имеет значение 0) – начало файла; SEEK_CUR (имеет значение 1) – текущая позиция; SEEK_END (имеет значение 2) – конец файла. Смещение определяет число байт, на которое надо сместить указатель относительно заданного начала отсчета. Смещение может быть как положительным, так и отрицательным числом. Оба параметра имеют тип long.
|