Типы данных в языке C++__________________________________697

Имеется также функция _creat, осуществляющая примерно те же функции,
что и open.

Закрывается файл функцией close:

int close(int handle);

Запись и чтение при работе с файлами, определяемыми дескрипторами hand-
le, осуществляется функциями write и read:

#include <io.h>
int write(int handle, void *buf, unsigned len);

int read(int handle, void *buf, unsigned len);

В этих функциях buf — указатель на буфер, из которого записывается в файл
или в который читается из файла len байтов.

Чтобы продемонстрировать работу с файлами, определенными своими деск-
рипторами, давайте воспроизведем пример, приведенный в разделе 12.9.2.3, в ко-
тором осуществлялась запись и чтение двух целых числе i и j, действительного
числа а и строки s:

ttinclude <stdio.h>
ttinclude <stdlib.h>
ttinclude <fcntl.h>
ttinclude <sys\stat.h>
ttinclude <io.h>
ttinclude <string.h>

int i = 1, j = 25, il, jl;

double a = 25e6, al;

char s[10], si[10] ;

strcpy(s,"Иванов");

int handle;

// запись в файл

if ((handle = open("Test.txt", 0_WRONLY | 0_CREAT I 0_BINARY)) == -1)

{

ShowMessage("Файл не удается создать");

return;

}

write(handle, &i, sizeof(int));        // запись i

write(handle, &j, sizeof(int));        // запись j

write(handle, &a, sizeof(double));     // запись а

write(handle, s, strlen(s)+1);         // запись строки s

close(handle) ;

// чтение из файла

if ((handle = open("Test.txt", 0_RDONLY | 0_BINARY)) == -1)

(

ShowMessage("Файл не удается открыть");

return;

}

read(handle, &il, sizeof(int));         // чтение i

read(handle, &jl, sizeof(int));         // чтение j

read(handle, &al, sizeof(double));      // чтение а

readfhandle, si, strlen(s)+1);          // чтение строки s

close(handle);

Если вы сравните этот код с тем, который был приведен в разделе 12.9.2.3, то
увидите, что они практически идентичны и различаются только синтаксисом. Со-
ответственно, и все приемы записи и чтения строк произвольной длины, рассмот-
ренные в разделе 12.9.2.3, могут применяться и в данном случае.

Для работы с файлами, имеющими дескрипторы, могут использоваться функ-
ции tell и Iseek, аналогичные рассмотренным в разделе 12.9.2.3 функциям ftell и
fseek, производящими операции с указателями файлов. Имеются также функции