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; }