Глава 12. Библиотечные функции Borland C++ 289
typedef struct _Names { char FirstName[20];
) NAMES;
int main()
{
FILE *fHandle;
NAMES NameRecord;
long int CurPos;
int Err;
// Открыть существующий файл для исправления if ((fHandle = fopen ( "NAMES.BIN", "r+b")) == NULL)
{
printf("%s\n","Error Opening File");
return (1) ;
}
// Последовательный просмотр файла и вывод значений
do {
Cur Роз = ftell(fHandle);
Err = fread(&NameRecord, sizeof(NAMES), 1, fHandle);
if (Err) (
// Если Err равно нулю, то есть вызов fread() успешен, // то проверить имя на совпадение if (stricmp(NameRecord.FirstName,"Chip") == 0) {
// При совпадении сбросить файловый указатель,
// скопировать новое значение в запись,
// передвинуть указатель обратно на изменяемую запись
//и продолжить обработку
fseek(fHandle, CurPos, SEEK_SET) ;
strcpy(NameRecord.FirstName,"Patty") ;
fwrite(SNameRecord, sizeof(NAMES), 1, fHandle);
fseek(fHandle, CurPos, SEEK_SET) ;
continue;
} printt("%s\n",NameRecord.FirstName) ;
} } while (Err) ;
fclose ( fHandle) ;
return (0);
}
До сих пор мы в основном изучали, насколько файлы с произвольным доступом эффективнее, если не считать расхода дискового пространства, чем файлы с последовательным доступом.
10 Зап. 306