Глава 12. Библиотечные функции Borland C++
NameRecord.RecNo = (ftell(fHandle)/sizeof(NAMES)) ;
fwrite(SNameRecord, sizeof(NAMES), 1, fHandle);
strcpy(NameRecord.FirstName,"Jim");
NameRecord.RecNo = (ftell(fHandle)/sizeof(NAMES)) ;
fwritef&NameRecord, sizeof(NAMES), 1, fHandle);
strcpy(NameRecord.FirstName,"David") ;
NameRecord.RecNo = (ftell(fHandle)/sizeof(NAMES)) ;
fwrite(SNameRecord, sizeof(NAMES), 1, fHandle);
strcpy(NameRecord.FirstName,"Chip");
NameRecord.RecNo = (ftell(fHandle)/sizeof(NAMES)) ;
fwrite(SNameRecord, sizeof(NAMES), 1, fHandle);
strcpy(NameRecord.FirstName,"Cheryl") ;
NameRecord.RecNo = (ftell(fHandle)/sizeof(NAMES)) ;
fwrite (SNameRecord, sizeof (NAMES) , 1, fHandle).;
// Переставить файловый указатель на начало файла fseek(fHandle, 0, SEEK_SET); «
// Циклический запрос пользователю
// на ввод номера записи от 0 до 4
// и вывод информации из соответствующей записи
do
{
printf("\n%s\n", "Enter a number from 0 to 4");
printf("%s\n", "Any other key to exit");
ch = getch() ;
if (ch >= '0' && ch <= '4') {
fseek(fHandle, (ch-48) * sizeof(NAMES), SEEK_SET) ;
fread(&NameRecord, sizeof(NAMES), 1, fHandle);
printf("\n%s%d","Record Number ", NameRecord.RecNo);
printf("\n%s%s\n","Name in Record ",NameRecord-. FirstName);
) else
break;
} while (1);
printf("\nTerminating.....\n") ;
// Закрыть файл fclose ( fHandle) ;
return (0) ;
}
Использование файлов с произвольным доступом открывает широкие возможности для ускорения обращения к хранящейся в файле информации. На рис. 12.3 показана картина, получившаяся при выполнении программы 12.10.
ю*