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


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Перемещение позиции ввода/вывода – fseek





Функция перемещает указатель вводв/вывода в файле ввода-вывода.

 

int fseek(FILE * fileid, long offset, int whence);

 

Устанавливает указатель чтения/записи в буфере файла, связанного с идентификатором fileid в новую позицию (offset байтов от позиции, заданной whence). Для файлов в текстовом режиме offset может быть 0 или значением, возвращаемым ftell. whence должно быть равно 0, 1 или 2; эти значения представлены тремя символическими константами, определенными в stdio.h:

whence Положение в файле
SEEK_SET (0) Начало файла
SEEK_CUR (1) Текущая позиция
SEEK_END (2) Конец файла

fseek игнорирует любой символ, вставленный с помощью ungetc.

fseek используется с файловым вводом-выводом; для ввода-вывода через обработчик файла используйте lseek.

Следующей после fseek операцией обработки файла может быть либо ввод либо вывод.

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

!!! fseek может вернуть 0, указывая на успешное перемещение, хотя в действительности это не так. Это происходит потому, что DOS, которая фактически устанавливает указатель, не проверяет результат установки. fseek возвращает код ошибки, только если файл не открыт, или устройство не готово.

Пример:

 

#include <stdio.h>

long filesize(FILE *stream);

int main(void)

{ FILE *stream;

stream = fopen("MYFILE.TXT", "w+");

fprintf(stream, "This is a test");

printf("Filesize of MYFILE.TXT is %ld bytes\n", filesize(stream));

return 0;

}

long filesize(FILE *stream)

{ long curpos, length;

/* сохраняет текущую позицию файла */

curpos = ftell(stream);

/* ищет конец файла */

fseek(stream, 0L, SEEK_END);

/* получает текущее смещение в файле */

length = ftell(stream);

/* восстанавливает сохраненную позицию */

fseek(stream, curpos, SEEK_SET);

return length;

}

 







Date: 2015-12-12; view: 380; Нарушение авторских прав



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