Функции позиционирования файла 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Функции позиционирования файла



int fseek (FILE *stream, long offset, int origin)

fseek устанавливает позицию для stream; последующее чтение или запись будет производиться с этой позиции. Новая текущая позиция устанавливается со смещением offset относительно положения, заданного значением origin. Если origin равно 0 то смещение производится относительно начала файла; если origin равно 1, то относительно прежней текущей позиции; и относительно конца файла, если origin равно 2. Значение offset должно быть равно нулю или значению, полученному при помощи функции ftell. Это единственный надежный способ получения величины offset для функции fseek.

 

long ftell (FILE *stream)

ftell возвращает текущее значение смещения в байтах относительно начала потока stream или -1L, в случае ошибки.

 

void rewind (FILE *stream)

rewind(fp) делает то же, что и fseek(fp,0L,SEEK_SET); clearerr(fp).

 

int fgetpos (FILE *stream, fpos_t *ptr)

fgetpos записывает текущую позицию потока stream в *ptr для последующего использования ее в fsetpos. Тип fpos_t позволяет хранить значения такого рода. В случае ошибки fgetpos возвращает ненулевое значение.

 

int fsetpos (FILE *stream, const fpos_t *ptr)

fsetpos устанавливает позицию в stream, читая ее из *ptr, куда она была ранее записана с помощью fgetpos. В случае ошибки fsetpos возвращает ненулевое значение.

 

int feof (FILE *stream)

feof возвращает ненулевое значение, если для потока stream установлен индикатор конца файла.

 

void clearerr (FILE *stream)

clearerr очищает индикаторы конца файла и ошибки потока stream.

Математические функции

В головном файле <math.h> описываются следующие математические функции:

 

double sin(double x) синус x

double cos(double x) косинус x

double tan(double x) тангенс x

double asin(double x) арксинус x; xÎ[-1,+1]

double acos(double x) арккосинус x; xÎ[-1,+1]

double atan(double x) арктангенс x

double sinh(double x) гиперболический синус x

double cosh(double x) гиперболический косинус x

double tanh(double x) гиперболический тангенс x

double exp(double x) экспоненциальная функция ex

double log(double x) натуральный логарифм ln(x), x>0

double log10(double x) десятичный логарифм log10(x), x>0

double sqrt(double x) квадратный корень Öx, x³0

double fabs(double x) абсолютное значение |x|

double pow(double x, double y) xy

double ldexp(double x, int n) x*2n

Функции общего назначения

Функции этого раздела предназначены для преобразования чисел и запроса памяти; они описаны в головном файле <stdlib.h>.

double atof(const char *s)

atof переводит строку s в значение double. В случае переполнения выдает HUGE_VAL - некоторое положительное double-значение, определенное в головном файле <math.h>; при исчезновении порядка - нуль.

 

int atoi(const char *s)

atoi переводит строку s в значение int. В случае переполнения выдает (int)HUGE_VAL - некоторое положительное double-значение, определенное в головном файле <math.h>, преобразованное в int; при исчезновении порядка - нуль.

 

void *calloc(size_t nobj, size_t size)

calloc возвращает указатель на место в памяти, отведенное для массива nobj объектов, каждый из которых имеет размер size. Выделенная область памяти обнуляется. Если память отвести не удалось, то результат работы функции - NULL.

 

void *malloc(size_t size)

malloc возвращает указатель на место в памяти для объекта размера size. Выделенная память не инициализируется. Если память отвести не удалось, то результат работы функции - NULL.

void free(void *p)

free освобождает область памяти, на которую указывает p; если p равно NULL, то функция ничего не делает. Значение p должно указывать на область памяти, ранее выделенную с помощью функций calloc или malloc.

Дальние переходы

 

Головной файл <setjmp.h> предоставляет средства для изменения обычной последовательности обработки вызовов функций: «вызов – возврат в точку вызова». Типичная ситуация, когда требуется отказаться от этой стратегии – необходимость вернуться из «глубоко вложенного» вызова функции на верхний уровень, минуя промежуточные возвраты.

 

int setjmp (jmp_buf env)

setjmp сохраняет контекст вызова в env для последующего его использования в longjmp. Возвращает нуль, если возврат осуществляется непосредственно из setjmp, и значение val (которое должно быть отличным от нуля), если возврат произошел из последующего вызова longjmp. Обращение к setjmp разумно только в определенных ситуациях: в основном, это проверки в if, swith и циклах в выражениях отношения вида

if (setjmp() = = 0)

/* после прямого возврата из setjmp */

else

/* после возврата из longjmp */

 

void longjmp (jmp_buf env, int val)

longjmp восстанавливает контекст, сохраненный в env при последнем вызове setjmp. Счет возобновляется, как если бы функция setjmp только что отработала и вернула ненулевое значение val. При этом переменныеимеют те значения, которые они имели в момент обращения к longjmp; функция setjmp значений объектов не сохраняет. Результат непредсказуем, если в момент обращения к longjmp, функция, содержащая вызов setjmp, уже завершила свою работу стандартным образом, вернув управление в точку вызова.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 355; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.138.144 (0.005 с.)