Глава 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