Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив WinRAR / лекции / lecture_04_files.ppt
Скачиваний:
17
Добавлен:
20.04.2015
Размер:
964.1 Кб
Скачать

Функция fseek( )

Функция fseek( ) позволяет выполнять чтение и запись с произвольным доступом.

Прототип: int fseek(FILE *fp, long count, int access);

fp - указатель на файл, возвращенный функцией fopen( ),

count - номер байта относительно заданной начальной позиции, начиная с которого будет выполняться операция,

access - способ задания начальной позиции. Переменная access может принимать следующие значения:

SEEK-SET (0) - начальная позиция задана в начале файла; SEEK-CUR (1) - начальная позиция считается текущей; SEEK-END (2) - начальная позиция задана в конце файла.

При успешном завершении возвращается ноль, при ошибке - ненулевое значение

Вызов fseek(fp,OL,0) означает, что мы идем в файл, на который ссылается указатель fp, и находим байт, отстоящий на 0 байт от начала, т.е. первый байт.

Использование fseek( ) для печати содержимого файла

#include <stdio.h> int main() {

FILE *fp; long set = 0L;

if ((fp=fopen("input.txt”,"r")) == 0) printf("Нельзя открыть%s\n", "input.txt");

else {

while(fseek(fp, set++, 0) == 0) putchar(getc(fp));

fclose(fp);

}

return 0;

}

while(fseek(fp, set++,0) == 0) putchar(getc(fp));

Вызов fseek(fp,OL,0) означает, что мы находим первый байт.

Затем функция putchar( ) печатает содержимое этого байта. При следующем прохождении через цикл переменная set увеличивается до 1L, и печатается следующий байт.

Процесс продолжается до тех пор, пока set не попытается попасть в fseek( ) после конца файла. В этом случае fseek( ) возвращает значение -1 и цикл прекращается.

Функция ferror( )

Функция ferror( ) позволяет проверить правильность выполнения последней операции при работе с файлами.

Прототип: int ferror(FILE *fp);

Вслучае ошибки возвращается ненулевое значение, в противном случае возвращается ноль.

Функция remove( )

Функция remove( ) удаляет файл. Прототип: int remove(const char * file_name);

file_name - указатель на строку со спецификацией файла.

При успешном завершении возвращается ноль, в противном случае возвращается ненулевое значение.

Функция rewind( )

Функция rewind( ) устанавливает указатель текущей позиции в начало файла.

Прототип: void rewind(FILE *fp);

Функция fread( )

Функция fread( ) предназначена для чтения блоков данных из потока.

Прототип:

unsigned fread(void *ptr, unsigned size, unsigned n, FILE * fp);

Она читает n элементов данных, длиной size байт каждый, в блок памяти, на который указывает указатель ptr, Общее число прочитанных байтов равно произведению n*size.

При успешном завершении функция fread( ) возвращает число прочитанных элементов данных, при ошибке - 0.

Функция fwrite( )

Функция fwrite( ) предназначена для записи в файл блоков данных.

Прототип:

unsigned fwrite(void *ptr, unsigned size, unsigned n, FILE *fp);

Она добавляет n элементов данных, длиной size байт каждый, в заданный выходной файл fp.

При успешном завершении операции функция fwrite() возвращает число записанных элементов данных, при ошибке - неверное число элементов данных.

Пять стандартных файлов

stdin - для ввода данных из стандартного входного потока (по умолчанию - c клавиатуры);

stdout - для вывода данных в стандартный выходной поток (по умолчанию - на экран дисплея);

stderr - файл для вывода сообщений об ошибках (всегда связан с экраном дисплея);

stdprn - для вывода данных на принтер; stdaus - для ввода и вывода данных в

коммуникационный канал.

Низкоуровневый ввод/вывод

Вязыке Си имеется также система низкоуровневого ввода/вывода без буферизации и форматирования данных, соответствующая стандарту системы UNIX.

Прототипы составляющих ее функций находятся в файле <io.h>.

Кэтим функциям относятся:

open( ) - открыть файл; close( ) - закрыть файл; read( ) - читать данные; write( ) - записать данные;

lseek( ) - поиск определенного байта в файле; unlink( ) - уничтожить файл.

Здесь используются дискрипторы файлов int fp.

Соседние файлы в папке лекции