282 Часть II. Программирование на C++
дом диске, имеют строго фиксированный размер. Такие файлы с фиксированной длиной лучше всего создавать как файлы с произвольным доступом. В таком случае можно изменить, например, пятый элемент файла, просто записав новую информацию на его место, не опасаясь за целостность шестого. При работе с файлами с последовательным доступом такой гибкости достичь невозможно.
Файлы с последовательным доступом . Такие файлы следует читать с начала до конца и искать в них необходимую информацию приходится построчно. Программа из листинга 12.4 создает файл с последовательным доступом, листинг 12.5 демонстрирует его чтение, а листинги 12.6 и 12.7 показывают примеры правильной и неправильной модификации файлов с последовательным доступом.
При записи информации в текстовый файл мржно использовать функцию fprintff). Эта функция во всем идентична printfo, за исключением одного параметра: перед строкой формата дополнительно располагается дескриптор потока ввода-вывода (stream handle), в который производится запись.
ftinclude <stdio.h>
int main()
t
FILE *fHandle;
// Открыть несуществующий файл на запись как текстовый if ((fHandle = fopen ( "NAMES.TXT", "wt")) == NULL) {
// При ошибке открытия'файла вывести сообщение //и выйти с кодом возврата 1 printf("%s\n","Error Opening File");
return (1) ;
}
// Добавление строк в файл при помощи fprintfO fprintff fHandle, "%s\n", "Nanci");
fprintff fHandle, "%s\n", "Jim");
fprintff fHandle, "%s\n", "David");
fprintf( fHandle, "%s\n", "Chip");
fprintff fHandle, "%s\n", "Cheryl");
fclose ( fHandle) ;
return (0) ;
}
В результате выполнения программы 12.4 будет создан файл Names.txt. Его содержимое может быть просмотрено из командной строки DOS с помощью команды TYPE: