mode – SEEK_SET – смещение от начала файла,
SEEK_CUR – смещение вперед (назад) от текущей позиции,
SEEK_END – смещение от конца файла.
# include <stdio.h>
# include <stdlib.h>
void main ()
{
FILE* outf, int c, value = 100;
outf = fopen("INT.DAT", "r+b");
if (fseek (outf, 11*sizeof(int), SEEK_SET)! = 0)
{ puts ("ошибка позиционирования"); exit (1); }
else
{
fread (&c, sizeof(int), 1, outf);
printf ("12-ое число==%d", c);
}
fclose (outf);
}
Чтобы на основе файла с произвольным доступом получить типизированный файл, необходимо, чтобы все записи файла имели одинаковый тип и длину. Если файловый указатель FILE* указывает на открытый файл записей типа t, то следующие операторы выполняют позиционирование в файле.
· переместить файловый указатель на следующую позицию от текущей
fseek (f, sizeof(t), SEEK_CUR);
· переместить файловый указатель на предыдущую позицию от текущей
fseek (f, -sizeof(t), SEEK_CUR);
· переместить файловый указатель в конец файла
fseek (f, 0, SEEK_END);
· получить указатель файла. Файловый указатель запоминается в переменной pos как смещение в байтах от начала файла. Функция возвращает значение 0 в случае успеха, -1 – в случае ошибки
int fgetpos(FILE* stream, longint* pos);
· восстановить позицию файлового указателя
int fsetpos(FILE* stream, longint* pos);
· получить файловый указатель
longint ftell(FILE* stream);
# include <stdio.h>
# include <stdlib.h>
void main ()
{
FILE* inf; longint pos; char buffer[128];
inf = fopen(“AAA.cpp”, “rb”);
fgets(buffer, 128, inf);
printf(“1-я строка==%s\n”, buffer);
fgetpos(inf, &pos);
fgets((buffer, 128, inf);
printf(“2-я строка==%s\n”, buffer);
fsetpos(inf, &pos);
fclose(inf);
}
Потоковые классы находятся в следующих файлах:
В модуле iostream.h содержится определение стандартных потоков ввода вывода:
· сin - объект класса istream связанный со стандартным буферизированным входным потоком
· cout – объект типа ostream, связанный со стандартным буферизованным выходным потоком
· cerr – объект класса ostream, связанный со стандартным небуферизированным выходным потоком, в котором выдаются собщения об ошибках
· clog – объект класса ostream, связанный со стандартным буферизированным выходным потоком, в котором выдаются сообщения об ошибках.
В модуле iostream.h определены стандартные операции ввода и вывода данных. Операция ввода класса istream называется извлечением (чтением) данных из потока. Она обозначается символом операции сдвига вправо >>. Операция вывода класса ostream называется вставкой (записью) данных в поток. Она обозначается с помощью операции сдвига влево <<. Операции сдвига интерпретируются как операция ввода/вывода только в том случае, если левым операндом является один из объектов класса iostream: cin, cout, cerr, clog:
cin >> имя_объекта базового типа
cout << выраж-е_базового _типа
cerr << выраж-е_базового _типа
clog << выраж-е_базового _типа
1) в соответствии с синтаксисом С++ операции сдвига имеют невысокий приоритет, поэтому правильными являются следующие выражения:
cout << 2 + 3 +4;
cout << (x<0 ?–x: x);
2) так как операции вставки и извлечения возвращают ссылку на потоковый объект, являющийся левым операндом, то операции вставки и извлечения можно связывать в цепочки
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.