Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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.

Date: 2015-10-19; view: 259; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию