Описание функций Си

         

Fabs



     fabs

Функция Возвращает абсолютное значение числа с плавающей точкой.

Синтаксис #include

double fabs(double x);

Файл, содержащий math.h прототип

Описание fabs вычисляет абсолютное значение х и возвращает его как double.

Возвращаемое fabs возвращает абсолютное значение х. значение

Переносимость fabs доступна в UNIX и поддерживается стандартом ANSI C.

Смотрите также

Пример:

#include

#include

int main(void) { float number = -1234.0; printf("число:%f, абсолютное значение %f\n",number,fabs(number)); return 0; }



Farcallo



     farcalloc

Функция Выделяет блок памяти в глобальном heap'e.

Синтаксис #include

void far * farcalloc(unsigned long nunits, unsigned long unitsz);



Файл, содержащий alloc.h прототип

Описание Функция farcalloc распределяет память в глобальном heap'e под массив, состоящий из nunits элементов, причем каждый элемент длиной unitsz байтов.

При распределении памяти глобальном heap'e помните следующее:

- может быть распределена вся память с произволь- ной выборкой (ЗУПВ);

- могут быть размещены блоки, размером более 64К;

- для доступа к размещаемым блокам используются "дальние" указатели (с атрибутом "far").

В моделях памяти: компактных, больших и сверх больших, farcalloc соответствует calloc, однако не идентична. Она использует параметр типа long unsigned, в то время, как обычные функции (напри- мер malloc) используют параметры unsigned.

В модели памяти tiny эту функцию использовать нельзя.

Возвращаемое Функция farcalloc возвращает указатель значение на новый блок, или адресный нуль NULL, если для размещения нового блока не хватило памя- ти.

Переносимость Функция уникальна для системы DOS.

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { char far *fptr; char *str = "Hello"; /* выделить память */ fptr = farcalloc(10,sizeof(char)); if(fptr) { /* скопировать строку "Hello" в выделенный блок памяти. */ /* Замечание. Используется функция movedata, поскольку вы можете работать в малой (small) модели памяти, в которой нельзя использовать функции копирова- ния строки, которые подразумевают, что пара- метры имеют тип near */ movedata(FP_SEG(str),FP_OFF(str),FP_SEG(fptr),FP_OFF(fptr), strlen(str)); /* вывести строку. Обратите внимание на модификатор F*/ printf(" Строка с указателем far: %Fs\n",fptr); /* освободить память */ farfree(fptr); } return 0; }



Farcorel



     farcoreleft

Функция Возвращает размер неиспользуемой памяти глобальном heap'e.

Синтаксис #include

unsigned long farcoreleft(void);

Файл, содержащий alloc.h прототип

Описание Функция farcoreleft возвращает общий объем неис- пользуемой памяти в области, лежащей выше послед- него выделенного блока.

В модели памяти tiny эту функцию использовать нельзя.

Возвращаемое farcoreleft возвращает объем неиспользуемой памяти значение между самым верхним выделенным блоком и концом ОЗУ.

Переносимость farcoreleft уникальна для DOS.

Смотрите также

Пример:

#include

#include

int main(void) { printf("Объем неиспользуемой памяти в дальней области\n"); printf("равен %lu байт \n",farcoreleft()); return 0; }



Farfree



     farfree

Функция Освобождает блок, размещенный в глобальном heap'e.

Синтаксис #include

void farfree(void far * block);

Файл, содержащий alloc.h прототип

Описание Функция farfree освобождает предварительно выделен- ный в глобальном heap'e блок.

В модели памяти tiny эту функцию использовать нельзя.

В моделях памяти small и medium блоки, выделенные farmalloc, нельзя освободить функцией free и нао- борот, т.к. в этих моделях глобальная и локальная области памяти различаются.

Возвращаемое Нет. значение

Переносимость farfree уникальна для DOS.

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { char far *fptr; char *str = "Hello"; /* выделить память */ fptr = farcalloc(10,sizeof(char)); if(fptr) { /* скопировать строку "Hello" в выделенный блок памяти. */ /* Замечание. Используется функция movedata, поскольку вы можете работать в малой (small) модели памяти, в которой нельзя использовать функции копирова- ния строки, которые подразумевают, что пара- метры имеют тип near */ movedata(FP_SEG(str),FP_OFF(str),FP_SEG(fptr),FP_OFF(fptr), strlen(str)); /* вывести строку. Обратите внимание на модификатор F*/ printf(" Строка с указателем far: %Fs\n",fptr); /* освободить память */ farfree(fptr); } return 0; }



Farheapc



     farheapchecknode

Функция Ищет и проверяет отдельный узел глобального heap'а.

Синтаксис #include

int farheapchecknode(void *node);

Файл, содержащий alloc.h прототип

Описание Если узел был освобожден и farheapchecknode вызы- вается с указателем на освобожденный узел, то farheapchecknode может вернуть значение _BADNODE, вместо предполагаемого _FREEENTRY. Это происходит потому, что соседние свободные блоки сливаются и блок, указанный при вызове функции, больше не су- ществует.

Возвращемое При ошибке возращется значение < 0, при успешном значение завершение возвращается значение > 0.

Если нет глобального heap'a, то возвращается зна- чение _HEAPEMPTY (1). Если память запорчена, то возвращается _HEAPCORRUPT(-1). Если узел не найден, то возвращается _BADNODE (-2). Если узел освобожден, то возвращается _FREEENTRY (3). Если узел, это используемый блок, то возвращается _USEDENTRY (4).

Переносимость farheapcheckfree уникальна для DOS.

Смотрите также

Пример:

#include

#include

#define NUM_PTRS 10 #define NUM_BYTES 16

int main(void) { char far *array[NUM_PTRS]; int i; for(i=0; i



Farheapf



     farheapfillfree

Функция Заполняет свободные блоки глобального heap'а конс- тантным значением.

Синтаксис #include

int farheapfillfree(unsigned int fillvalue);

Файл, содержащий alloc.h прототип

Описание ????????????????

Возвращемое При ошибке возращется значение < 0, при успешном значение завершение возвращается значение > 0.

Если нет глобального heap'а, то возвращается значе- ние _HEAPEMPTY (1). Если глобальный heap проверен, то возвращается _HEAPOK (2). Если память запорчена, то возвращается _HEAPCORRUPT(-1).

Переносимость farheapfillfree уникальна для DOS.

Смотрите также Пример:

#include

#include

#include

#define NUM_PTRS 10 #define NUM_BYTES 16

int main(void) { char far *array[NUM_PTRS]; int i,j; int res; for(i=0; i



Farheapw



     farheapwalk

Функция Используется для перемещения по глобальному heap от узла к узлу.

Синтаксис #include

int farheapwalk(struct farheapinfo *hi);

Файл, содержащий alloc.h прототип

Описание farheapwalk подразумевает, что память не запорчена. Для проверки перед использованием farheapwalk, вы- зовите farheapcheck. При достижении последнего блока функция возвращает _HEAPOK. При следующем вызове farheapwalk, она вернет _HEAPEND.

farheapwalk получает указатель на структуру типа heapinfo (определена в файле alloc.h). При первом вызове farheapwalk установите поле hi.ptr в 0. farheapwalk вернет вам в этом поле адрес первого блока в heap памяти. Поле hi.size содержит размер этого блока в байтах. hi.in_use - это флаг, кото- рый устанавливается, если этот блок используется в настоящий момент.

Возвращемое Если нет глобального heap, то возвращается значе- значение ние _HEAPEMPTY (1). Если структура heapinfo содержит верные данные, то возвращается _HEAPOK (2). Если достигнут конец heap памяти, то возвращается _HEAPEND (5).

Переносимость farheapwalk уникальна для DOS.

Смотрите также

Пример:

#include

#include

#define NUM_PTRS 10 #define NUM_BYTES 16

int main(void) { struct farheapinfo hi; char far *array[NUM_PTRS]; int i; for(i=0; i



Farmallo



     farmalloc

Функция Размещает данные в области глобального heap.

Синтаксис #include

void far * farmalloc(unsigned long nbytes);

Файл, содержащий alloc.h прототип

Описание Функция farmalloc выделяет блок в глобальном heap, размер блока в байтах передается в аргументе nbytes.

При распределении глобального heap помните следую- щее:

- может быть распределена вся память с произволь- ной выборкой (ЗУПВ);

- могут быть размещены блоки, размером более 64К;

- для доступа к размещаемым блокам используются "дальние" указатели (с атрибутом "far").

В моделях памяти: компактных, больших и сверх больших, функция соответствует, однако не идентич- на, malloc. Она получает параметр типа long unsigned, в то время, как malloc использует пара- метр типа unsigned.

В модели памяти tiny эту функцию использовать нельзя.

Возвращаемое Функция farmalloc возвращает указатель на значение новый выделенный блок или нуль, если для размещения нового блока не хватило памяти.

Переносимость Функция уникальна для системы DOS.

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { char far *fptr; char *str = "Hello"; /* выделить память */ fptr = farmalloc(10); if(fptr) { /* скопировать строку "Hello" в выделенный блок памяти. */ /* Замечание: Используется функция movedata, поскольку вы можете работать в малой (small) модели памяти, в которой нельзя использовать функции копирова- ния строки, которые подразумевают, что пара- метры имеют тип near */ movedata(FP_SEG(str),FP_OFF(str),FP_SEG(fptr),FP_OFF(fptr), strlen(str)); /* вывести строку. Обратите внимание на модификатор F*/ printf(" Строка с указателем far: %Fs\n",fptr); /* освободить память */ farfree(fptr); } return 0; }



Farreall



     farrealloc

Функция Изменяет размер выделенного глобальной heap памяти блока.

Синтаксис #include

void far * farrealloc(void far * oldblock, unsigned long nbytes);

Файл, содержащий alloc.h прототип

Описание Функция farrealloc изменяет размер выделенного ранее блока, при необходимости содержимое старого блока копируется в новый.

При распределении глобальной heap памяти помните следующее:

- может быть распределена вся память с произволь- ной выборкой (ЗУПВ);

- могут быть размещены блоки, размером более 64К;

- для доступа к размещаемым блокам используются "дальние" указатели (с атрибутом "far").

В модели памяти tiny эту функцию использовать нельзя.

Возвращаемое Функция farrealloc возвращает указатель на значение новый выделенный блок, который может отличаться от испходного. Если для размещения нового блока не хватило памяти, то функция farrealloc возвращает NULL.

Переносимость Функция уникальна для системы DOS.

Смотрите также

Пример:

#include

#include

int main(void) { char far *fptr; fptr = farmalloc(10); printf("Адрес первого блока:%Fp\n",fptr); fptr = farrealloc(20); printf("Адрес второго блока:%Fp\n",fptr); farfree(fptr); return 0; }



Fclose



     fclose

Функция Закрывает поток.

Синтаксис #include

int fclose (FILE * stream);

Файл, содержащий stdio.h прототип

Описание Функция fclose закрывает указанный поток stream; Все буфера, связанные с потоком stream, перед зак- рытием сбрасываются. Буфера, размещенные системой, освобождаются во время процесса закрытия. Буфера, назначенные функциями setbuf или setvbuf, не осво- бождаются автоматически. (Однако, если в качестве указателя, функции setvbuf передать 0, то он будет освобожден при закрытии потока.)

Возвращаемое Функция fclose при успешном завершении возвращает значение 0. Если были обнаружены какие-либо ошибки, функция fclose возвращает значение EOF.

Переносимость Данная функция поддерживается системой UNIX и стан- дартом ANSI C.

Смотрите также

Пример:

#include

#include

int main(void) { FILE *fp; char buf[11] = "0123456789"; /* создать файл содержащий 10 байт */ fp = fopen("DUMMY.FIL","w"); if(fp) { fwrite(&buf,strlen(buf),1,fp); /* закрыть файл */ fclose(fp); } else { printf("Ошибка, при открытии файла\n"); } return 0; }



Fcloseal



     fcloseall

Функция Закрывает открытые потоки.

Синтаксис #include

int fcloseall(void);

Файл, содержащий stdio.h прототип

Описание Функция fcloseall закрывает все открытые потоки, исключая stdin и stdout, stdprn, stdaux и strerr.

Возвращаемое fcloseall возвращает число закрытых потоков. При значение возникновении ошибки возвращает EOF.

Переносимость поддерживается системой UNIX.

Смотрите также

Пример:

#include

int main(void) { FILE *fp1,*fp2; int streams_closed; /* открыть два потока */ fp1 = fopen("DUMMY.ONE","w"); fp2 = fopen("DUMMY.TWO","w"); /* закрыть открытые потоки */ streams_closed = fcloseall(); if(streams_closed == EOF) /* вывести сообщение об ошибке */ perror(" Ошибка "); else /* вывести результат работы функции */ printf("Было закрыто %d потока\n",streams_closed); return 0; }



Fcvt



     fcvt

Функция Преобразует число с плавающей точкой в строку сим- волов.

Синтаксис #include

char * fcvt(double value, int ndig, int * dec, int * sign);

Файл, содержащий stdlib.h прототип

Описание Функция fcvt преобразует значение value в строку с нулевым окончанием из ndig цифр, начиная с самой левой значащей цифры, и возвращает адресный указа- тель строки. Позиция десятичной точки относительно начала строки косвенным образом хранится в пара- метре dec (отрицательное значение decpt означает левый отсчет полученных цифр). В самой строке де- сятичной точки нет. Если знак результата отрица- тельный, слово, на которое указывает адресный ука- затель sign, имеет ненулевое значение, иначе оно равно 0. Число округляется к числу разрядов, зада- ваемому параметром ndig.

Возвращаемое Функция fcvt возвращает адресный указатель значение статическую строку, чье содержимое перезаписывает- ся при каждом вызове функций.

Переносимость Функция поддерживается на системах UNIX. Она не определена в стандарте ANSI C, и поэтому мы не ре- комендуем использовать ее при написании переносимых программ.

Смотрите также

Пример:

#include

#include

int main(void) { char *str; double num; int dec, sign; int ndig = 5;

num = 9.876; str = fcvt(num,ndig,&dec,&sign); printf("Строка = %s dec = %d sign = %d\n",string,dec,sign); /* отрицательное число */ num = -123.45; str = fcvt(num,ndig,&dec,&sign); printf("Строка = %s dec = %d sign = %d\n",string,dec,sign); num = 0.678e5; str = fcvt(num,ndig,&dec,&sign); printf("Строка = %s dec = %d sign = %d\n",string,dec,sign); return 0; }



Fdopen



     fdopen

Функция Связывает поток с логическим номером файла.

Синтаксис #include

FILE * fdopen(int handle, char * type);

Файл, содержащий stdio.h прототип

Описание Функция fdopen связывает поток с дескриптором, полученным функциями creat, dup, dup2 или open. Тип потока должен совпадать с режимом, в котором был открыт handle.

Символьная строка type имеет одно из следующих значений:

r - открытие файла только для чтения;

w - создание файла для записи;

а - присоединение; открытие для записи в конец файла или создание для записи, если файл не существует;

r+ - открытие существующего файла для обновления (чтения и записи);

w+ - создание нового файла для изменения;

a+ - открытие для присоединения; открытие (или создание, если файл не существует) для обнов- ления в конец файла.

Если данный файл открывается или создается в текс- товом режиме, вы можете приписать символ t к зна- чению параметра type (rt, w+t, и т.д.); аналогич- но, для спецификации бинарного режима вы можете к значению параметра type добавить символ b (wb,a+b, и т.д.).

Если в параметре type отсутствуют символы t или b, режим будет определяться глобальной переменной _fmode. Если переменная _fmode имеет значение O_BINARY, файлы будут открываться в бинарном режи- ме, иначе, если _fmode имеет значение O_TEXT, фай- лы открываются в текстовом режиме. Данные констан- ты O_... определены в файле fcntl.h.

При открытии файла в режиме обновления (UPDATE), над результирующим потоком stream могут быть выполнены как операции ввода, так и вывода. Тем не менее вывод не может следовать непосредст- венно за вводом без вмешательства функций fseek или rewind. Также ввод, без применения функций fseek, rewind не может непосредственно следовать за выводом или вводом, который встречает конец файла (EOF).

Возвращаемое При успешном завершении fdopen возвращает значение заново открытый поток stream. В случае ошибки, функция возвращают ноль (NULL).

Переносимость fdopen поддерживаeтся на системах UNIX.

Смотрите также Функции

Пример:

#include

#include

#include

#include

int main(void) { int handle; FILE *stream;

/* открыть файл */ handle = open("DUMMY.FIL", O_CREAT, S_IREAD|S_IWRITE);

/* теперь преобразуем его в поток */ stream = fdopen(handle, "w"); if (stream == NULL) printf("Ошибка fdopen\n"); else { fprintf(stream, "Hello, world\n"); fclose(stream); } return 0; }



Feof



     feof

Функция Обнаруживает конец файла (EOF) в потоке.

Синтаксис #include

int feof(FILE * stream);

Файл, содержащий stdio.h прототип

Описание Функция feof является макрокомандой, которая производит проверку данного потока stream на приз- нак конца файла (EOF). Если признак получил значе- ние хотя бы один раз, то операции чтения файла сохраняют это значение до тех пор, пока не будет вызвана функция rewind или файл не будет закрыт.

Признак конца файла сбрасывается при каждой операции ввода.

Возвращаемое значение Функция feof возвращает ненулевое значение, если при последней операции ввода потока stream был обнаружен конец файла, и 0 в противном случае.

Переносимость feof доступна в системе UNIX и поддерживается стандартом ANSI C.

Смотрите также

Пример:

#include

int main(void) { FILE *stream; char ch;

/* открыть файл для чтения */ stream = fopen("DUMMY.FIL", "r"); /* ввести из файла символ */ ch = fgetc(stream); /* конец файла? */ if(feof(stream)) printf("Конец файла\n"); /* закрыть файл */ fclose(stream); return 0; }



Ferror



     ferror

Функция Обнаруживает ошибки в потоке.

Синтаксис #include

int ferror(FILE * stream);

Файл, содержащий stdio.h прототип

Описание Функция ferror является макрокомандой, которая проверяет данный поток stream на ошибочную опера- цию записи или чтения. Если установлен признак ошибки потока stream, он сохраняет его до вызова функций clearerr или rewind или до момента закры- тия потока.

Возвращаемое Функция ferror возвращает ненулевое значение, если значение в потоке stream была обнаружена ошибка.

Переносимость Данная функция поддерживается на системах UNIX и совместима со стандартом ANSI C.

Смотрите также

Пример:

#include

int main(void) { FILE *stream; char ch;

/* открыть файл для записи */ stream = fopen("DUMMY.FIL", "w"); /* справоцировать ошибку */ ch = fgetc(stream); /* конец файла? */ if(ferror(stream)) { /* вывести сообщение об ошибке */ printf("Ошибка чтения\n"); /* сбросить признак ошибки */ clearerr(stream); } fclose(stream); return 0; }



Fflush



     fflush

Функция Сбрасывает поток.

Синтаксис #include

int fflush(FILE * stream);

Файл, содержащий stdio.h прототип

Описание Функция fflush записывает в файл содержимое бу- фера, связанного с потоком stream, если он был от- крыт на вывод.

fflush не оказывает влияния на небуферизованные потоки.

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

Переносимость Поддерживается стандартом ANSI C и совместима с UNIX.

Смотрите также

Пример:

#include

#include

#include

#include

void flush(FILE *stream);

int main(void) { FILE *stream; char msg[] = "Тестовый пример"; /* создать файл */ stream = fopen("DUMMY.FIL","w"); /* записать в файл данные */ fwrite(msg,strlen(msg),1,stream); clrscr(); printf("Для сброса потока нажмите любую клавишу ...\n"); getch(); /* сбросить данные в файл, без его закрытия */ flush(stream); printf("Содержимое буферов сброшено в файл\n"); printf("Для завершения нажмите любую клавишу\n"); getch(); return 0; } void flush(FILE *stream) { int duphandle; /* сбросить внутренние буфера файла */ fflash(stream); /* создать второй дескриптор */ duphandle = dup(fileno(stream)); /* закрыть второй дескриптор для сброса буферов DOS */ close(duphandle); }



Fgetc



     fgetc

Функция Получает символ из потока.

Синтаксис #include

int fgetc(FILE * stream);

Файл, содержащий stdio.h прототип

Описание fgetc возвращает следующий символ из указанного входного потока stream.

Возвращаемое При успешном завершении возвращает символ, преоб- значение разованный к типу int без расширения знака. При обнаружении конца файла возвращает EOF.

Переносимость Поддерживается стандартом ANSI C и совместима с UNIX.

Смотрите также

Пример:

#include

#include

#include

int main(void) { FILE *stream; char msg[] = "Тестовый пример"; char ch; /* создать файл для его изменения */ stream = fopen("DUMMY.FIL","w+"); /* записать в файл данные */ fwrite(msg,strlen(msg),1,stream); /* перейти в начало файла */ fseek(stream,0,SEEK_SET); do { /* ввести символ из файла */ ch = fgetc(stream); /* вывести символ на экран */ putch(ch); } while(ch!=EOF); fclose(stream); return 0; }



Fgetchar



     fgetchar

Функция Получает символ из потока stdin.

Синтаксис #include

int fgetchar(void);

Файл, содержащий stdio.h прототип

Описание fgetchar возвращает следующий символ из потока stdin. Определяется как fgetc(stdin).

Возвращаемое При успешном завершении возвращает символ, преоб- значение разованный к типу int без расширения знака. При обнаружении конца файла или ошибки возвращает EOF.

Переносимость Поддерживается UNIX.

Смотрите также

Пример:

#include

int main(void) { char ch; /* запрос ввода */ printf("Введите символ, затем нажмите .\n"); /* ввести символ из потока stdin */ ch = fgetchar(); /* напечатать введенный символ */ printf(" Считан символ: '%c'\n",ch); return 0; }



Fgetpos



     fgetpos

Функция Возвращает положение указателя текущей позиции в файле.

Синтаксис #include

int fgetpos(FILE * stream, fpos_t *pos);

Файл, содержащий stdio.h прототип

Описание fgetpos сохраняет позицию указателя файла, связан- ного с потоком stream, в месте, указываемом pos. Точное значение является "волшебной булочкой", другими словами, для вас оно не имеет значения.

Тип fpos_t описывается следующим образом:

typedef long fpos_t;

Возвращаемое При успешном завершении fgetpos возвращает 0. При значение ошибке возвращает ненулевое значение и устанавли- вает errno в EBADF или EINVAL.

Переносимость Поддерживается стандартом ANSI C.

Смотрите также

Пример:

#include

#include

int main(void) { FILE *stream; char string[] = "Тестовый пример"; fpos_t filepos; /* создать файл для его изменения */ stream = fopen("DUMMY.FIL","w+"); /* записать в файл данные */ fwrite(string,strlen(string),1,stream); /* сообщить положение указателя */ fgetpos(stream,&filepos); printf("Указатель находится в %ld позиции\n"); fclose(stream); return 0; }



Fgets



     fgets

Функция Получает строку символов из потока.

Синтаксис #include

char * fgets(char s, int n, FILE *stream);

Файл, содержащий stdio.h прототип

Описание fgets считывает из потока stream строку символов и помещает ее в s. Ввод завершается после ввода n-1 символа или при вводе символа перехода на сле- дующую строку, смотря что произойдет раньше. В от- личие от gets, fgets прекращает ввод строки при получении символа перехода на следующую строку. Нулевой байт добавляется в конец строки для инди- кации ее конца.

Возвращаемое При успешном завершении возвращает указатель на s, значение при ошибке или конце файла возвращает NULL.

Переносимость Совместима с системой UNIX и поддерживается стандар- том ANSI C. Определена также в книге Керниган и Ритчи.

Смотрите также

Пример:

#include

#include

int main(void) { FILE *stream; char string[] = "Тестовый пример"; char msg[20]; /* создать файл для его изменения */ stream = fopen("DUMMY.FIL","w+"); /* записать в файл данные */ fwrite(string,strlen(string),1,stream); /* перейти в начало файла */ fseek(stream,0,SEEK_SET); /* ввести строку из файла */ fgets(msg,strlen(string)+1,stream); /* напечатать строку */ printf("%s",msg); fclose(stream); return 0; }



Fileleng



     filelength

Функция Получает размер файла в байтах.

Синтаксис #include

long filelength(int handle);

Файл, содержащий io.h прототип

Описание Функция filelength возвращает длину в байтах фай- ла, соответствующего дескриптору handle.

Возвращаемое При успешном завершении функция filelength значение возвращает значение типа long- длину файла в бай- тах. При ошибке функция возвращает значение -1L, и глобальной переменной errno присваивается:

EBADF - Неверный номер файла.

Переносимость filelength уникальна для DOS.

Смотрите также

Пример:

#include

#include

#include

#include

#include

int main(void) { int handle; char buf[11] = "0123456789"; /* создать файл из 10 байт */ handle = open("DUMMY.FIL",O_RDWR|O_CREAT|O_TRUNC,S_IREAD|S_IWRITE); write(handle,buf,strlen(buf)); /* напечатать размер файла */ printf("Размер файла в байтах : %ld\n",filelength(handle)); /* закрыть файл */ close(handle); return 0; }



Fileno



     fileno

Функция Получает дескриптор файла.

Синтаксис #include

int fileno(FILE * stream);

Файл, содержащий stdio.h прототип

Описание fileno представляет собой макрокоманду, которая возвращает логический номер файла для заданного потока stream. Если поток stream имеет более одно- го номера, функция fileno возвращает номер, назна- ченный данному потоку при первом открытии.

Возвращаемое fileno возвращает целое число, обозначающее значение дескриптор файла, соответствующий потоку stream.

Переносимость Данная функция поддерживается на системах UNIX.

Смотрите также

Пример:

#include

int main(void) { FILE *stream; int handle; /* создать файл */ stream = fopen("DUMMY.FIL","w"); /* получить дескриптор файла */ handle = fileno(stream); /* напечатать его */ printf("Дескриптор файла = %d\n",handle); /* закрыть файл */ fclose(stream); return 0; }



Fillelli



     fillellipse

Функция Рисует и закрашивает эллипс.

Синтаксис #include

void far ellipse(int x,int y,int xradius, int yradius);

Файл, содержащий graphics.h прототип

Описание Рисует эллипс с центром в точке ( x,y ) и горизонтальной и вертикальной осями xradius и yradius соответственно, и закрашивает его текущими цветом закраски, используя текущий шаблон.

Возвращаемое Нет. значение

Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int midx,midy,i; int xradius = 100,yradius = 50;

/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } midx = getmaxx() / 2; midy = getmaxy() / 2;

/* цикл по шаблонам */ for(i=EMPTY_FILL; i



Fillpoly



     fillpoly

Функция Рисует и закрашивает многоугольник.

Синтаксис #include

void far fillpoly (int numpoints, int far *polypoints);

Файл, содержащий graphics.h прототип

Описание fillpoly рисует контур многоугольника ,имею- щий numpoints точек, используя текущий вид линии и цвет (так же, как это делает drawpoly),а затем закрашивает многоугольник текущим цветом закраски и с помощью текущего шаблона.

polypoints указывает на последовательность из (numpoints x 2) целых чисел. Каждая пара чисел x и y является координатами вершины многоугольника.

Возвращаемое Нет. значение

Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int i,maxx,maxy; /* наш многоугольник */ int poly[10];

/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); maxy = getmaxy();

poly[0] = 20; /* первая точка */ poly[1] = maxy/2;

poly[2] = maxx-20; /* 2 */ poly[3] = 20;

poly[4] = maxx-50; /* 3 */ poly[5] = maxy-20;

poly[6] = maxx/2; /* 4 */ poly[7] = maxy/2;

poly[8] = poly[0]; /* возврат в исходную т. */ poly[9] = poly[1];

/* цикл по шаблонам */ for(i=EMPTY_FILL; i



Findfirs



     findfirst

Функция Просматривает директорию диска.

Синтаксис #include

#include

int findfirst(char * pathname, struct ffblk * ffblk, int attrib);

Файл, содержищий dir.h прототип

Описание Функция findfirst производит поиск в директории диска посредством системного вызова DOS 0x4E.

Параметр pathname представляет собой символьную строку, содержащую необязательную спецификацию дискового устройства, маршрут поиска и имя иско- мого файла. Имя файла может содержать шаблоны (такие как ? или *). Если соответствующий файл найден, структура ffblk заполняется информацией о файле и каталоге, его содержащем.

Cтруктура ffblk определена следующим образом:

struct ffblk { char ff_reserved[21]; /* зарезервировано DOS */ char ff_attrib; /* атрибуты */ int ff_ftime; /* время */ int ff_fdate; /* дата */ long ff_fsize; /* размер */ char ff_fname[13]; /* имя файла */ };

Параметр attrib - это используемый в MS-DOS бай- татрибут файла, который употребляется при выборе подходящих для поиска файлов. Параметр attrib мо- жет быть одной из следующих определенных в файле dos.h констант:

FA_RDONLY - атрибут "только чтение"; FA_HIDDEN - скрытый файл; FA_SYSTEM - системный файл; FA_LABEL - метка тома; FA_DIREC - директория; FA_ARCH - архив.

Более подробную информацию об этих атрибутах вы найдете в документе "Справочное руководство прог- раммиста по DOS".

Отметим, что ff_ftime и ff_fdate содержат битовые поля для определения даты и времени. Эти структу- ры поддерживаются DOS. Обе 16-битовые структуры делятся на 3 поля:

ff_ftime: биты 0-4 Секунды, деленные на 2. (т.е. 10 соответствует 20 секундам). биты 5-10 минуты ьиты 11-15 часы

ff_fdate: биты 0-4 день биты 5-8 месяц биты 9-15 год с 1980 (т.е. 9 соответствует 1989)

Структура ftime объявленная в io.h, использует поля времени и даты соответствующие этом. Смотри- те функции getftime и setftime.

Возвращаемое При успешном завершении, то есть при успешном значение поиске файла, соответствующего параметру pathname, функция findfirst возвращает значение 0.

Если подходящих файлов больше не существует, или в имени файла допущена ошибка, функция возвращают значение -1 и глобальная переменная errno получа- ет одно из следующих значений:

ENOENT - маршрут доступа или имя файла не найде- ны; ENMFILE - нет больше файлов.

Переносимость Функция уникальна для DOS.

Смотрите также

Пример:

#include

#include

int main(void) { struct ffblk ffblk; int done; printf("Листинг директории *.*\n"); done = findfirst(**.**,&ffblk,0); while (!done) { printf(" %s\n", ffblk.ff_name); done = findnext(&ffblk); } return 0; }

Результат:

Листинг директории *.* FINDFRST.C FINDFRST.OBJ FINDFRST.MAP FINDFRST.EXE



Findnext



     findnext

Функция Продолжает просмотр, начатый функцией findfirst.

Синтаксис #include

int fidtnext(struct ffblk * ffblk);

Файл, содержащий dir.h прототип

Описание Функция findnext используется для выборки последо- вательности файлов, соответствующих параметру pathname, задаваемому функцией findfirst. ffblk - это тот же самый блок, который заполняется при вызове функции findfirst. Данный блок содержит всю необходимую информацию для продолжения поис- ка. При каждом вызове функции findnext будет воз- вращаться одно имя файла до тех пор, пока файлы, соответствующие параметру, pathname не закончат- ся.

Возвращаемое При успешном завершении, то есть при успешном значение поиске файла, соответствующего параметру pathname, функция findnext возвращает значение 0.

Если подходящих файлов больше не существует, или в имени файла допущена ошибка, функция возвращает значение -1 и глобальная переменная errno получа- ет одно из следующих значений:

ENOENT - маршрут доступа или имя файла не найде- ны; ENMFILE - нет больше файлов.

Переносимость Функция уникальна для DOS.

Смотрите также

Пример:

#include

#include

int main(void) { struct ffblk ffblk; int done; printf("Листинг директории *.*\n"); done = findfirst(**.**,&ffblk,0); while (!done) { printf(" %s\n", ffblk.ff_name); done = findnext(&ffblk); } return 0; }

Результат:

Листинг директории *.* FINDFRST.C FINDFRST.OBJ FINDFRST.MAP FINDFRST.EXE



Floodfil



     floodfill

Функция Заполняет ограниченную область.

Синтаксис #include

void far floodfill(int x, int y int border);

Файл, содержащий graphics.h прототип

Описание floodfill заполняет ограниченную область на устройствах с побитовым отображением. (x,y) - произвольная точка внутри закрашиваемой области. Область, граница которой окрашена цветом border,заполняется текущим цветом закраски и шаблоном. Если указанная точка находится внутри ограниченной области,то окрашивается область, а если снаружи, то закрашивается все поле за преде- лами области.

Используйте, если это возможно, fillpoly вместо floodfill. Это позволит обеспечить кодовую сов- местимость с будущими версиями.

Замечание. floodfill не работает с драйвером IBM-8514.

Возвращаемое Если в процессе заполнения области возникла значение ошибка, то graphresult возвращает значение -7.

Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int maxx,maxy;

/* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); maxy = getmaxy(); /* выбор цвета рисования */ setcolor(getmaxcolor()); /* выбор цвета заполнения */ selectfillstyle(SOLID_FILL,getmaxcolor()); /* нарисовать границу вокруг экрана */ rectangle(0,0,maxx,maxy); /* нарисовать несколько окружностей */ circle(maxx/3,maxy/2,50); circle(maxx/2,20,100); circle(maxx-20,maxy-50,75); circle(20,maxy-20,25); /* ожидать нажатия клавиши */ getch(); /* заполнить ограниченную область */ floodfill(2,2,getmaxcolor()); /* очистка */ getch(); closegraph(); return 0; }



Floor



     floor

Функция Округление в меньшую сторону.

Синтаксис #include

double floor(double x);

Файл, содержащий math.h прототип

Описание Функция floor находит наибольшее целое число не превышающее значение x.

Возвращаемое Функция возвращает найденное целое число. значение (как double).

Переносимость Функция поддерживаются системой UNIX и стандартом ANSI C.

Смотрите также

Пример:

#include

#include

int main(void) { double number = 123.54; double down,up; down = floor(number); up = ceil(number); printf("Исходное число:%5.21f\n",number); printf("Округленное вниз :%5.21f\n",down); printf("Округленное вверх :%5.21f\n",up); return 0; }



Flushall



     flushall

Функция Сбрасывает буфера всех потоков.

Синтаксис #include

int flushall(void);

Файл, содержащий stdio.h прототип

Описание Функция flushall сбрасывает все буфера, связанные с открытыми входными потоками, и записывает в со- ответствующие файлы все буфера, относящиеся к от- крытым выходным потокам. Любые операции чтения, следующие за функцией flushall будут читать новые данные для входных файлов в буферы.

Все потоки остаются открытыми.

Возвращаемое flushall возвращает число открытых входных и выход- значение потоков.

Переносимость Поддерживается системой UNIX.

Смотрите также

Пример:

#include

int main(void) { FILE *stream; /* создать файл */ stream = fopen("DUMMY.FIL","w"); /* сбросить все открытые потоки */ printf("Сброшено %d потоков\n",flushall()); /* закрыть файл */ fclose(stream); return 0; }



Fmod



     fmod

Функция Вычисляет x по модулю y, то есть остаток от деления нацело x/y.

Синтаксис #include

double fmod(double x, double y);

Файл, содержащий math.h прототип

Описание Функция fmod вычисляет x по модулю y (то есть остаток f, удовлетворяющий равенству x=iy+f для целого i и 0

#include

int main(void) { double x=5.0,y=2.0; double result; result = fmod(x,y); printf("Остаток от деления %1f на %1f равен %1f",x,y,result); return 0; }

Результат:

Остаток от деления 5.0 на 2.0 равен 1.0



Fnmerge



     fnmerge

Функция Создает новое имя файла из отдельных частей.

Синтаксис #include

void fnmerge(char * path, const char * drive, const char * dir, const char * name, const char * ext);

Файл, содержащий dir.h прототип

Описание Функция fnmerge создает имя файла из его компонен- тов. Новое имя файла, то есть его полный маршрут доступа, строится следующим образом:

X:\DIR\SUBDIR\NAME.EXT , где

X - спецификация устройства;

\DIR\SUBDIR\ - директория;

NAME - имя;

.EXT - расширение

fnmerge предполагает, что для запоминания постро- енного имени маршрута доступа достаточно места. Максимальная длина маршрута доступа определяется константой MAXPATH, определенной в dir.h.

Две вышеописанные функции взаимообратны. Если вы с помощью функции fnsplit разделите на части мар- шрут доступа path, а затем сольете полученные компоненты с помощью функции fnmerge, то вы снова получите маршрут доступа path.

Возвращаемое Нет. значение

Переносимость Функция работает только в системе DOS.

Смотрите также

Пример:

#include

#include

#include

int main(void) { char drive[MAXDRIVE]; char dir[MAXDIR]; char file[MAXFILE]; char ext[MAXEXT]; char s[MAXPATH]; int flag; for (;;) { printf("> "); if (!gets(s)) break; flag = fnsplit(s,drive,dir,file,ext); printf(" drive: %s, dir: %s, file: %s, ext: %s, ", drive, dir, file, ext); printf("flags: "); if (flag & DRIVE) printf(":"); if (flag & DIRECTORY) printf("d"); if (flag & FILENAME) printf("f"); if (flag & EXTENSION) printf("e"); printf("\n"); fnmerge(t,drive,dir,file,ext); if (strcmp(t,s) != 0) /* shouldn't happen! */ printf(" --> strings are different!"); } }

Вывод: > C:\TURBOC\FN.C drive: C:, dir: \TURBOC\, file: FN, ext: .C,flags: :dfe > FILE:C drive: , dir: , file: FILE, ext: .C, flags: fe > \TURBOC\SUBDIR\NOEXT. drive: , dir: \TURBOC\SUBDIR\, file: NOEXT, ext: ., flags: dfe > C:MYFILE drive: C:, dir: , file: MYFILE, ext: , flags: :f > z



Fnsplit



     fnsplit

Функция Разделяет полное имя файла на компоненты.

Синтаксис #include

int fnsplit(char * path, char * drive, char * dir, char * name, char * ext);

Файл, содержащий dir.h прототип

Описание Функция fnsplit берет в качестве входного аргу- мента полное имя файла (то есть маршрут доступа path) в форме :

X:\DIR\SUBDIR\NAME.EXT

и делит его на 4 части, которые запоминает в сим- вольных строках, адресными указателями которых являются: drive, dir, name, ext. (Каждый из ком- понентов может получить значение NULL, что озна- чает, что данный компонент был выделен, но не сохранен).

Максимальный размер для данных символьных строк задается константами MAXDRIVE, MAXDIR, MAXPATH, MAXNAME, MAXEXT (определяемыми в файле dir.h), причем каждая длина включает в себя место для по- зиции нулевого байта.

Константа Максимальная Строка длина ---------------------------------------------------------------------- MAXPATH (80) path; MAXDRIVE (3) drive; включая двоеточие (:); MAXDIR (66) dir; включая лидирующий и хвостовой знак (\); MAXFILE (9) name; MAXEXT (5) ext; включая ведущую точку(.) ----------------------------------------------------------------------

Функция fnsplit подразумевает, что для хранения каждого компонента достаточно места ( если компо- нент имеет значение, отличное от NULL).

При расщеплении полного имени файла (маршрута доступа) на части функция fnsplit воспринимает символы пунктуации следующим образом:

- компонент drive сохраняет двоеточие, присоеди- ненное к спецификации дисковода (C:, A: и т.д);

-компонент dir сохраняет ведущие и хвостовые зна- ки \ (\tc\include\, \source\, и т.д);

-компонент name включает имя файла;

- компонент ext сохраняет точку, предшествующую расширению имени файла (.c, .exe, и т.д.).

Две вышеописанные функции взаимообратны. Если вы с помощью функции fnsplit разделите на части мар- шрут доступа path, а затем сольете полученные компоненты с помощью функции fnmerge, то вы снова получите маршрут доступа path.


Возвращаемое Функция fnsplit возвращает целое число (составлен- значение ное из 5-ти флагов, описанных в файле dir.h), ко- торое показывает, какие компоненты полного имени файла присутствуют в path; далее перечислены фла- ги и компоненты, которые они обозначают:

EXTENSION - расширение имени файла; FILENAME - имя файла; DIRECTORY - директория (и возможные поддиректории) DRIVE - спецификация дисковода (смотрите файл dir.h); WILDCARD - шаблоны (* или?).

Переносимость Функция работает только в системе DOS.

Смотрите также

Пример:

#include

#include

#include

int main(void) { char drive[MAXDRIVE]; char dir[MAXDIR]; char file[MAXFILE]; char ext[MAXEXT]; char *s; int flag; s=getenv("COMSPEC"); flag = fnsplit(s,drive,dir,name,ext); printf("Командный процессор :"); if (flag & DRIVE) printf("\tдисковод: %s\n",drive); if (flag & DIRECTORY) printf("\tдиректория: %s\n",dir); if (flag & FILENAME) printf("\tимя: %s\n",name); if (flag & EXTENSION) printf("\tрасширение: %s\n",ext); return 0; }


Fopen



     fopen

Функция Открывает поток.

Синтаксис #include

FILE * fopen(char * filename, char * type);

Файл, содержащий stdio.h прототип

Описание Функция fopen открывает файл, именованный парамет- ром filename и связывает его с соответствующим потоком stream. Функция fopen в качестве резуль- тата возвращает адресный указатель, который будет идентифицировать поток stream в последующих опе- рациях.

Строка mode, используемая в функции fopen может принимать следующие значения:

r - открытие файла только для чтения;

w - создание файла для записи;

а - присоединение; открытие для записи в конец файла или создание для записи, если файл не существует;

r+ - открытие существующего файла для обновления (чтения и записи);

w+ - создание нового файла для изменения;

a+ - открытие для присоединения; открытие (или создание, если файл не существует) для обнов- ления в конец файла.

Если данный файл открывается или создается в тек- стовом режиме, вы можете приписать символ t к значению параметра type (rt, w+t, и т.д.); анало- гично, для спецификации бинарного режима вы може- те к значению параметра type добавить символ b (wb,a+b, и т.д.). Если в параметре type отсутст- вуют символы t или b, режим будет определяться глобальной переменной _fmode. Если переменная _fmode имеет значение O_BINARY, файлы будут отк- рываться в бинарном режиме, иначе, если _fmode имеет значение O_TEXT, файлы открываются в текс- товом режиме. Данные константы O_... определены в файле fcntl.h.

При открытии файла в режиме обновления (UPDATE), над результирующим потоком stream могут быть вы- полнены как операции ввода, так и вывода. Тем не менее вывод не может следовать непосредственно за вводом без вмешательства функций fseek или rewind, а также ввод, без применения функций fseek, rewind не может непосредственно следовать за выводом или вводом, который встречает конец файла (EOF).

Возвращаемое При успешном завершении fopen возвращает значение указатель на открытый поток stream. В случае ошибки функция возвращает нуль (NULL).

Переносимость fopen поддерживаeтся на системах UNIX и опреде- лена в ANSI C. Кроме этого, она описана в книге Kernighan & Ritchie.

Смотрите также (пере- менная),

Пример:

/* Программа создает дубль AUTOEXEC.BAT */

#include

int main(void) { FILE *in, *out;

if((in = fopen("\\AUTOEXEC.BAT","rt"))==NULL) { fprintf(stderr, "Не могу открыть файл \n"); return(1); }

if((out = fopen("\\AUTOEXEC.BAK","wt"))==NULL) { fprintf(stderr, "Не могу открыть выходной файл \n"); return(1); }

while(!feof(in)) fputc(fgetc(in), out);

fclose(in); fclose(out); return 0; }



FP_OFF



     FP_OFF

Функция FP_OFF - получает смещение "дальнего" адреса (адреса с атрибутом "far").

Синтаксис #include

unsigned FP_OFF(void far *p);

Файл, содержащий dos.h прототип

Описание Макрокоманда FP_OFF используется для получения или установки адресного смещения указателя с ат- рибутом "far".

Возвращаемое Функция FP_OFF возвращает целое число без знака, значение представляющее собой значение адресного смещения.

Переносимость FP_OFF уникальна для DOS.

Смотрите также

Пример:

#include

#include

int main(void) { char *str = "fpoff.c"; printf(" Смещение этой строки равно %X\n",FP_OFF(str)); return 0; }



FP_SEG



     FP_SEG

Функция Получает адрес сегмента с атрибутом "far" (даль- ний).

Синтаксис #include

unsigned FP_SEG(void far *p);

Файл, содержащий dos.h прототип

Описание  Макрокоманда FP_SEG используется для получения или установки значения адреса сегмента для адресного указателя с атрибутом "far".

Возвращаемое  Функция FP_SEG возвращает целое число без знака, значение  представляющее собой значение адреса сегмента.

Смотрите также

Пример:

#include

#include

int main(void) { char *str = "fpoff.c"; printf(" Смещение этой строки равно %X\n",FP_OFF(str)); return 0; }



Fprintf



     fprintf

Функция Посылает форматированный вывод в поток.

Синтаксис #include

int fprintf(FILE * stream, const char *format [,argument,...]);

Файл, содержащий stdio.h прототип

Описание fprintf получает набор аргуметов, по одному для каждой спецификации формата, и выводит данные в поток. Количество аргументов должно совпадать с числом спецификаций.

Описание спецификаций формата приведено в описа- нии функции printf.

Возвращаемое fprintf возвращает число выведенных байт. При появ- значение лении ошибки возвращает EOF.

Переносимость fprintf совместима с системой UNIX и поддержи- вается стандартом ANSI C. Сосместима с Kernichan & Rithie.

Смотрите также

Пример:

#include

int main(void) { FILE *stream; int i=100; char c = 'C'; float f = 1.234; /* открыть файл для изменения */ stream = fopen("DUMMY.FIL","w+"); /* вывести в файл данные */ fprintf(stream,"%d %c %f",i,c,f); /* закрыть файл */ fclose(stream); return 0; }



Fputc



     fputc

Функция Выводит символ в поток.

Синтаксис #include

int fputc(int c, FILE * stream);

Файл, содержащий stdio.h прототип

Описание Функция fputc выводит символ с в поток stream.

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

Переносимость Поддерживается системой UNIX и стандартом ANSI C.

Смотрите также

Пример:

#include

int main(void) { char msg[] = "Здравствуй мир"; int i=0; while(msg[i]) { fputc(msg[i],stdout); i++; } return 0; }



Fputchar



     fputchar

Функция Выводит символ в поток stdout.

Синтаксис #include

int fputchar(int c);

Файл, содержащий stdio.h прототип

Описание Функция fputchar выводит символ с в поток stdout. fputchar(c) определяется как fputc(c,stdout).

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

Переносимость Cовместима с системой UNIX.

Смотрите также

Пример:

#include

int main(void) { char msg[] = "Тестовый пример"; int i=0; while(msg[i]) { fputchar(msg[i]); i++; } return 0; }



Fputs



     fputs

Функция Выводит строку символов в поток.

Синтаксис #include

int fputs(char * string, FILE * stream);

Файл, содержащий stdio.h прототип

Описание Функция fputs копирует строку, ограниченную нулевым байтом в поток stream. Она не добавляет в конец строки символ перехода на новую строку и не выво- дит нулевой символ.

Возвращаемое При успешном завершении fputs возвращает последний значение выведенный символ. В противном случае возвращает EOF.

Переносимость fputs поддерживается системой UNIX и стандартом ANSI C. Кроме этого определена в Kernighan & Ritchie.

Cмотрите также fgets, gets, puts.

Пример:

#include

int main(void) { /* вывести строку в поток */ fputs("Тестовый пример",stdout); return 0; }



Fread



     fread

Функция Считывает данные из потока.

Синтаксис #include

size_t fread(void *ptr, size_t size, size_t n, FILE * stream);

Файл, содержащий stdio.h прототип

Описание Функция fread считывает n элементов данных, каждый длиной size байтов, из потока stream в блок с ад- ресной ссылкой ptr.

Общее число вводимых байт равно n x size.

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

В случае достижения конца файла или возникновения ошибки функция fread возвращает short count (воз- можно 0).

Переносимость Данная функция поддерживается системой UNIX и стандартом ANSI C.

Смотрите также

Пример:

#include

#include

int main(void) { FILE *stream; char msg[] = "Тестовый пример"; char buf[20]; if(stream = fopen("DUMMY.FIL","w+")) == NULL) { fprintf(stderr,"Не могу открыть файл\n"); return 1; } /* вывести в файл данные */ fwrite(msg,strlen(msg)+1,1,stream); /* перейти на начало файла */ fseek(stream,SEEK_SET,0); /* прочитать данные */ fread(buf,strlen(msg)+1,1,stream); printf("%s\n",buf); fclose(stream); return 0; }



Free



     free

Функция Освобождает память, выделенную под блок.

Синтаксис #include

void free(void *block);

Файл, содержащий stdlib.h и alloc.h прототип

Описание free освобождает блок памяти, выделенный функциями calloc, malloc или realloc.

Возвращаемое Нет. значение

Переносимость free совместима с системой UNIX и поддерживается стандартом ANSI C.

Смотрите также

Пример:

#include

#include

#include

int main(void) { char *str; /* выделить память под строку */ str = malloc(10); /* скопировать в строку "Hello" */ strcpy(str,"Hello"); /* вывести строку */ printf("Строка: %s\n",str); /* освободить память */ free(str); return 0; }



Freemem



     freemem

Функция Освобождает ранее выделенный блок памяти.

Синтаксис #include

int freemem(unsigned seg);

Файл, содержащий dos.h прототип

Описание freemem освобождае блок памяти выделенный пред- шествовавшим вызовом allocmem. seg - адрес сег- мента выделенного блока.

Возвращаемое При успешном завершении возвращает 0, при ошибке значение возвращает -1 и устанавливает глобальную пере- менную erron равной:

ENOMEM - Недостаточно памяти.

Смотрите также

Пример:

#include

#include

#include

int main(void) { unsigned int size,segp; int stat; size = 64; /* выделить блок размером 1024 (64х16) байт */ stat = allocmem(size,&segp); if(stat == 0) printf("Память выделена в сегменте %X\n",segp); else printf("Максимально доступно %u параграфов памяти\n",stat); freemem(segp); return 0; }



Freopen



     freopen

Функция Связывет с потоком новый файл.

Синтаксис #include

FILE * freopen(char * filename, char * mode, FILE *stream);

Файл, содержащий stdio.h прототип

Описание Функция freopen замещает указанным файлом откры- тый поток stream. Функция freopen закрывает файл, связанный со stream, независимо от откраваемого файла. Ее можно использовать для изменения пото- ков, связанных с stdin, stdout или stderr.

Строка mode, используемая в функции freopen, мо- жет принимать следующие значения:

r - открытие файла только для чтения;

w - создание файла для записи;

а - присоединение; открытие для записи в конец файла или создание для записи, если файл не существует;

r+ - открытие существующего файла для обновления (чтения и записи);

w+ - создание нового файла для изменения;

a+ - открытие для присоединения; открытие (или создание, если файл не существует) для об- новления в конец файла.

Если данный файл открывается или создается в тек- стовом режиме, вы можете приписать символ t к значению параметра mode (rt, w+t, и т.д.); анало- гично, для спецификации бинарного режима вы може- те к значению параметра mode добавить символ b (wb,a+b, и т.д.). Если в параметре mode отсутст- вуют символы t или b, режим будет определяться глобальной переменной _fmode. Если переменная _fmode имеет значение O_BINARY, файлы будут отк- рываться в бинарном режиме, иначе, если _fmode имеет значение O_TEXT, файлы открываются в текс- товом режиме. Данные константы O_... определены в файле fcntl.h.

При открытии файла в режиме обновления (UPDATE), над результирующим потоком stream могут быть вы- полнены как операции ввода, так и вывода. Тем не менее вывод не может следовать непосредственно за вводом без вмешательства функций fseek или rewind, а также ввод без применения функций fseek, rewind не может непосредственно следовать за выводом или вводом, который встречает конец файла (EOF).

Возвращаемое При успешном завершении, freopen возвращает значение указатель на открытый поток stream. В случае ошибки, функция возвращает ноль (NULL).

Переносимость freopen поддерживаeтся на системах UNIX и совместима со стандартом ANSI C.

Смотрите также

Пример:

#include

int main(void) { /* перенаправить стандартный вывод в файл */ if(freopen("OUTPUT.FIL","w",stdout) == NULL) fprintf(stderr,"Ошибка перенаправления потока\n"); /* этот вывод будет осуществляться в файл */ printf("этот вывод будет осуществляться в файл\n"); /* закрыть стандартный вывод */ close(stdout); return 0; }



Frexp



     frexp

Функция Разщепляет число двойной точности на мантиссу и порядок.

Синтаксис #include

double frexp(double value, int * exponent);

Файл, содержащий math.h прототип

Описание frexp вычисляет мантиссу m (типа double, большее или равное 0.5 и меньше 1.0) и целое n, такое, что x равно m x 2^n. frexp сохраняет n в целой переменной, на которую указывает exponent.

Возвращаемое frexp возвращает мантиссу m. значение

Обработку ошибочных состояний для frexp можно мо- дифицировать с помощью функции matherr.

Переносимость frexp совместима с UNIX и поддерживается стандартом ANSI C.

Смотрите также

Пример:

#include

#include

int main(void) { double mantissa,number; int exponent; number = 8.0; mantissa = frexp(number,&exponent); printf("Число %1f равно %1f умножить на 2 в степени %d\n", number,mantissa,exponent); return 0; }



Fscanf



     fscanf

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

Синтаксис #include

int fscanf(FILE * stream, char * format[, adress,...]);

Файл, содержащий stdio.h прототип

Описание fscanf сканирует посимвольно набор вводимых полей, считывая их из потока. Затем каждое поле из пото- ка форматируется в соответствии со спецификацией формата, которая передается fscanf в виде указа- теля на строку format. Полученное в результате этого поле fscanf запоминает в аргументах, пере- даваемых функции fscanf после параметра format. Количество аргументов должно совпадать с количес- твом спецификаций формата.

Описание спецификаций формата приведено в описа- нии функции scanf.

fscanf завершает сканирование отдельного поля при появлении пробела, являющегося разделителем, или при вводе поля, для которого указана ширина. Эти случаи обсуждаются в описании функции scanf.

Возвращаемое Функция fscanf возвращает количество успешно про- значение читанных, преобразованных и запомненных входных полей; возвращаемое значение не включает в себя прочитанные поля, которые не были сохранены.

Если fscanf делает попытку чтения в конце файла, то возвращается EOF. Если не было записано ни од- ного поля, возвращается значение 0.

Переносимость Функция fscanf поддерживается на системах UNIX и определена в стандарте Kernighan & Ritchie. Она поддерживается стандартом ANSI C.

Смотрите также

Пример:

#include

#include

int main(void) { int i; printf("Введите целое число:"); /* ввести из стандартного потока stdout целое число */ if(fscanf(stdin,"%d",&i)) printf("Целое равно:%d\n",i); else { fprintf(stderr,"Ошибка чтения целого\n"); exit(1); } return 0; }



Fseek



     fseek

Функция Устанавливает указатель файла в потоке.

Синтаксис #include

int fseek(FILE * stream, long offset, int fromwhere);

Файл, содержащий stdio.h прототип

Описание Функция fseek устанавливает адресный указатель файла, соответствующий потоку stream, в новую по- зицию, которая расположена по смещению offset от- носительно места в файле, определяемого парамет- ром fromwhere.

Параметр fromwhere может иметь одно из трех зна- чений 0, 1 или 2, которые представлены тремя сим- волическими константами (определенными в файле stdio.h), следующим образом:

--------------------------------------------------- Параметр Размещение в файле fromwhere -------------------------------------------------- SEEK_SET (0) начало файла; SEEK_CUR (1) позиция текущего указателя файла; SEEK_END (2) конец файла (EOF); --------------------------------------------------

Функция fseek сбрасывает любой символ, записанный с помощью функции ungetc.

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

После этой операции можно производить как ввод, так и вывод в поток.

Возвращаемое Функция fseek возвращает значение 0, если значение указатель файла успешно перемещен, и ненулевое значение в случае неудачного завершения.

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

Переносимость Данная функция поддерживаются на системах UNIX и стандартом ANSI C.

Смотрите также

Пример:

#include

int main(void) { FILE *stream; stream = fopen("MYFILE.TXT", "r"); print("filesize of MYFILE.TXT is %ld bytes\n", filesize(stream)); } 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); }



Fsetpos



     fsetpos

Функция Позиционирует указатель текущей позиции в файле, связанном с потоком stream.

Синтаксис #include

int fsetpos(FILE *stream, const fpos_t *pos);

Файл содержащий stdio.h прототип

Описание fsetpos устанавливает указатель текущей позиции файла, связанного с потоком stream в новую пози- цию, которая определяется значением, получаемым предшествующим вызовом функции fgetpos. fsetpos также сбрасывает признак конца файла, но не ока- зывает влияния на символы, помещаемые в поток функцией ungetc. После вызова fsetpos можно про- изводить как операции ввода, так и вывода.

Возвращаемое При успешном завершении fsetpos возвращает 0. При значение возникновении ошибки она возвращает ненулевое значение и устанавливает errno не равным 0.

Переносимость fsetpos поддерживается стандартом ANSI C.

Смотрите также

Пример:

#include

#include

void showpos(FILE *stream);

int main(void) { FILE *stream; fpos_t filepos; /* открыть файл для изменения */ stream = fopen("DUMMY.FIL","w+"); /* сохранить текущую позицию указателя */ fgetpos(stream,&filepos); /* записать в файл данные */ fprintf("stream,"Это тест"); /* вывести текущую позицию */ showpos(stream); /* установить новую позицию и вывести ее */ if(fsetpos(stream,&filepos) == 0) showpos(stream); else { fpritf(stderr,"Ошибка указателя файла\n"); exit(1); } /* закрыть файл */ fclose(stream); return 0; } void showpos(FILE *stream) { fpos_t pos; /* вывести текущее положение указателя */ fgetpos(stream,&pos); printf("Позиция указателя: %ld\n",pos); }



Fstat



     fstat

Функция Получает информацию об открытом файле.

Синтаксис #include

int fstat(char * handle, struct stat * buff)

Файл, содержащий sys\stat.h прототип

Описание Функция fstat записывают информацию об открытом файле (или директории), связанным с дескриптором handle в структуру stat. Aргумент buff адресует структуру stat (определенную в файле sys\stat.h). Структура содержит следующие поля:

st_mode - битовая маска, дающая информацию о ре- жиме открытия файла;

st_dev - идентификатор дисковода, на котором был открыт файл, или номер handle, если файл находится на устройстве;

st_rdev - так же, как и st_dev;

st_nlink - присваевается целая константа 1;

st_size - размер открытого файла в байтах;

st_atime - ближайшее время открытия файла, во время которого он был модифицирован;

st_mtime - так же, как и st_atime;

st_ctime - так же, как и st_atime.

Структура stat содержит на три поля больше, чем перечислено выше, они содержат данные, которые под управлением DOS не имеют значения.

Битовая маска, дающая информацию о режиме откры- того файла, содержит следующие биты:

Один из следующих битов должен быть установлен:

S_IFCHR - установлен, если параметр handle указы- вает на устройство (fstat);

S_IFREG - установлен, если обычный файл определя- ется параметром handle

Один или оба следующих бита должны быть установ- лены:

S_IWRITE - установлен, если пользователь имеет разрешение на запись;

S_IREAD - установлен, если пользователь имеет разрешение на чтение.

Битовая маска также имеет биты чтения/записи, они устанавливаются в соответствии с режимом доступа к файлу.

Возвращаемое Если информация об открытом файле была успешно по- значение лучена, функция возвращают значение 0. В случае ошибки (невозможно получить информацию), функция возвращает -1 и присваивают переменной errno:

EBADF - Неверный номер файла.

Смотрите также

Пример:

#include

#include

#include

int main(void) { struct stat statbuf; FILE *stream; /* открыть файл для изменения */ if((stream = fopen("DUMMY.FIL","w+")) == NULL) { fprintf(stderr,"Не могу открыть файл.\n"); return 1; } fprintf(stream,"Это тест"); fflush(stream); /* получить информацию о файле */ fstat(fileno(stream),&statbuf); /* вывести полученную информацию */ if(statbuf.st_mode & S_IFCHR) printf("Это устройство\n"); if(statbuf.st_mode & S_IFREG) printf("Это файл\n"); if(statbuf.st_mode & S_IREAD) printf("Разрешение на чтение\n"); if(statbuf.st_mode & S_IWRITE) printf("Разрешение на запись"); printf("Метка диска:%c\n",'A'+statbuf.st_dev); printf("Размер в байтах: %ld\n",statbuf.st_size); printf("Время последнего открытия: %s\n", ctime(&statbuf.st_ctime)); return 0; }



Ftell



     ftell

Функция Возвращает положение указателя текущей позиции файла.

Синтаксис #include

long int ftell(FILE *stream);

Файл, содержащий stdio.h прототип

Описание ftell возвращает положение указателя текущей позиции файла, связанного с потоком stream. Значение вы- дается в виде смещения в байтах относительно на- чала файла.

Значение, возвращаемое ftell, можно в дальнейшем использовать при вызове функции fseek.

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

Переносимость ftell доступна на системах UNIX и поддерживается стандартом ANSI C.

Смотрите также

Пример:

#include

int main(void) { FILE *stream; stream = fopen("DUMMY.FIL","w+"); fprintf(stream,"Это тест"); printf("Указатель файла: %ld\n",ftell(stream)); return 0; }



Ftime



     ftime

Функция Помещает текущее время в структуру типа timeb.

Синтаксис #include

void ftime(struct timeb *buf)

Файл, содержащий sys\timeb.h прототип

Описание ftime определяет текущее время и заполняет поля структуры типа timeb, на которую указывает пара- метр buf. Структура timeb определена следующим образом:

struct timed { long time; short millitm; short timezone; short dstflag; };

time - это поле содержит время в секундах с 00:00:00 1 января 1970 года по Гринвичскому мери- диану.

millitm - содержит часть секунды в миллисекундах.

timezone - содержит разницу в минутах между вре- менем по Гринвичу и местным временем. Это время вычисляется по направлению на запад от Гринвичс- кого меридиана. ftime определяет это время по со- держимому глобальной переменной timezone, которая устанавливается функцией tzset.

dstflag - равно 0, если летнее время не действу- ет, и не 0, в противном случае. Это поле опреде- ляется по глобальной переменной daylight (уста- навливаемой функцией tzset).

Примечание. Т.к. функция ftime вызывает функцию tzset, то вам нет необходимости это делать.

Возвращаемое Нет. значение

Переносимость Данная функция доступна в системе UNIX System V.

Смотрите также

Пример:

#include

#include

#include

#include

char *tzstr = "TZ=PST8PDT";

int main(void) { struct timeb t; putenv(tzstr); tzset();

ftime(&t); printf("%ld секунд с 1-1-70 по GMT\n",t.time); printf("плюс %d миллисекунд",t.millitm); printf("%d минут от GMT",t.timezone); printf("Летнее время %s действует", t.dstflag ? "":"не"); return 0; }



Fwrite



     fwrite

Функция Записывает данные в поток.

Синтаксис #include

size_t fwrite(void * ptr, size_t size, size_t n, FILE * stream);

Файл, содержащий stdio.h прототип

Описание fwrite добавляет n элементов данных, каждое величиной size байт в данный выходной поток. Дан- ные записываются из ptr.

Общее число выведенных байт равно n*size.

ptr должен быть объявлен как указатель на некото- рый объект.

Возвращаемое При успешном завершении fwrite возвращает число значение выведенных элементов (не байт). При ошибке она возвращает меньшее число.

Переносимость fwrite доступна в системах UNIX и поддерживается стандартом ANSI C.

Смотрите также

Пример:

#include

struct mystruct { int i; char ch; } int main(void) { FILE *stream; struct mystruct s; /* открыть файл TEST.$$$ */ if((stream = fopen("TEST.$$$","wb"))==NULL) { fprintf(stderr,"не могу открыть файл\n"); return 0; } s.i = 0; s.ch = 'A'; /* вывод в файл */ fwrite(&s,sizeof(s),1,stream); fclose(stream); return 0; }