Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по функциям С++.doc
Скачиваний:
168
Добавлен:
02.05.2014
Размер:
3.57 Mб
Скачать

Freemem

-----------------------------------------------------------------

НазначениеОсвобождает предварительно размещенный блок

памяти DOS.

Синтаксис int freemem(unsigned seg)

Прототип в dos.h

Замечанияfreemem освобождает блок памяти, выделенный вы-

зовом allocmem. seg - адрес сегмента этого бло-

ка.

Возвращаемоеfreemen при успешном выполнении возвращает 0.

значениеПри ошибке возвращается -1 и errno устанавлива-

ется в значение:

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

ПереносимостьУникальна для МS-DOS.

Смотри также allocmem, free

-----------------------------------------------------------------

Freopen

-----------------------------------------------------------------

НазначениеЗаменяет поток.

Синтаксис#include<stdio.h>

FILE *freopen(const char *filename,

const char *type, FILE *stream);

Прототип в stdio.h

Замечанияfreopen заменяет открытый поток stream имено-

ванным файлом. Исходный stream закрывается не

зависимо от того, успешно ли состоялось откры-

тие замененного файла или нет. freopen полезна

для замены файла, stdin, stdout или stderr.

Тип строки type, используемый при вызове

freeopen, может принимать одно из следующих

значений:

r Открыть только для чтения

w Создать для записи

a Добавление; открыть для записи в ко-

нец файла или создать для записи,

если файл не существует

r+ Открыть существующий файл для изме-

нения (запись и чтение)

w+ Создать новый файл для изменения

a+ Открыть для добавления; открыть (или

создать, если файл не существует)

для добавления в конец файла.

Для задания того, что файл открыт или создан в

текстовом режиме, вы можете добавить t к значе-

нию type (rt, w+t, и т.д.); аналогично для за-

дания двоичного режима вы должны добавить b к

значению type (wb, a+b, и т.д.).

Если t или b в type не заданы - режим определя-

ется значением глобальной переменной _fmode.

Если _fmode установлена в O_BINARY, то файлы

будут открыты в двоичном режиме. Если _fmode

установлена в O_TEXT - файлы будут открыты в

текстовом режиме. Эти константы определены в

файле fcntl.h.

Когда файл открыт для изменения, в результирую-

щий поток может быть произведен как ввод, так и

вывод. Однако вывод не может сразу следовать за

вводом без запроса fseek или rewind, как и ввод

не может сразу следовать за выводом без запроса

fseek или rewind, или ввода, который встречает

конец файла.

ВозвращаемоеПри успешном завершении freeopen возвращает

значениеаргумент stream. В случае ошибки - возвращает

NULL.

Переносимостьfreeopen доступна в системах UNIX и совместима

с ANSI Си.

Смотри также fclose, fdopen, fopen, open, setmode

Пример Смотри fopen

-----------------------------------------------------------------

frexp

-----------------------------------------------------------------

НазначениеРасщепляет число типа double на мантиссу и по-

казатель.

Синтаксис#include<math.h>

double frexp(double x,int *exponent);

Прототип вmath.h

Замечанияfrexp - вычисляет мантиссу m (число типа

double, большее или равное 0.5 и меньшее 1) и

целое число n такое, что x = m * 2**n. frexp

размещает n по адресу exponent.

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

значение

Переносимостьfrexp доступна в системах UNIX и совместима с

ANSI Си.

Смотри такжеexp, ldexp

-----------------------------------------------------------------

fscanf

-----------------------------------------------------------------

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

Синтаксис #include<stdio.h>

int fscanf(FILE *stream, const char *format,

[,adr ,...]);

Прототип вstdio.h

Замечанияfscanf сканирует символы с консоли. Затем пре-

образует считанные символы в соответствии с

форматом, заданным в строке формата, определяе-

мой указателем format. Затем преобразованные

данные размещаются по адресу (адресам), пере-

данным в качестве параметров функции fscanf, и,

наконец, выводит вводимые символы на консоль.

Число задаваемых в строке форматов должно сов-

падать с количеством адресов, переданных функ-

ции.

Описание используемых форматов приведены в опи-

сании функции scanf.

fscanf может прекратить сканирование символов

до того как достигнет конца файла при обнаруже-

ние белого поля (пробел, табуляция и т. п.) или

вообще завершиться по целому ряду причин. Смот-

ри описание функции scanf для более детального

ознакомления.

Возвращаемоеfscanf возвращает количество отсканированных

значениесимволов, успешно преобразованных и размещенных

по соответствующим адресам.

При достижении конца файла fscanf вернет EOF.

Если ни одного значения не было размещено

fscanf вернет 0 .

Переносимостьfcanf доступна в UNIX системах, она определена

Керниганом и Ричи. Данная функция совместима с

ANSI Си.

Смотри такжеatof, cscanf, fprintf, printf, scanf, sscanf,

vscanf, vsscanf

-----------------------------------------------------------------

fseek

-----------------------------------------------------------------

НазначениеПеремещает указатель файла.

Синтаксис #include<stdio.h>

int fseek(FILE *stream,long int offset,

int fromwhere);

Прототип в stdio.h

Oписание fseek устанавливает указатель файла, связанного

со stream, на новую позицию, которая отстоит от

места в файле, заданного в fromwhere, на коли-

чество байт, указанных в offset.

fromwhere должно быть одной из величин: 0, 1

или 2, которые представляют три символьные

константы (определены в stdio.h):

fromwhere Размещение в файле

--------- ------------------

SEEK_SET (0) начало файла

SEEK_CUR (1) текущее положение указателя

файла

SEEK_END (2) конец файла

fseek теряет любой символ, возвращенный в файл

с использованием ungetc.

После fseek следующая операция по обмену с фай-

лом может быть как вводом, так и выводом.

Возвращаемоеfseek возвращает 0, если указатель успешно пе-

значениеремещен, и ненулевое значение при ошибке.

Переносимостьfseek доступна в системах UNIX и cовместима с

ANSI Си.

Смотри такжеfgetpos, fopen, fsetpos, ftell, lseek, rewind,

setbuf, tell

Пример

#include<stdio.h>

/* возвращает число байтов в потоке */

long filesize(FILE *stream)

{

long curpos,length;

curpos = ftell(stream);

fseek(stream,OL,SEEK_END);

length = ftell(stream);

fseek(stream,curpos,SEEK_SET);

return(length);

}

main()

{

FILE *stream;

stream = fopen("MYFILE.TXT", "r");

printf("размер файла MYFILE.TXT - %ld"

" байт\n"), filesize(stream);

}

Результат выполнения программы

размер файла MYFILE.TXT - 15 байт

-----------------------------------------------------------------