Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лб инф передел / C++ / Алиса / Информатика / ПерваяПрограммаС.doc
Скачиваний:
47
Добавлен:
15.04.2015
Размер:
3.17 Mб
Скачать

Инструкции

fprintf(ptr, "\n\n");

выводят по две пустые строки между отдельными структурами CD.

Проектирование программы

Знание того, как осуществляется запись в дисковый файл и чтение из него, открывает перед вами возможность создания сложных приложений. В этой главе все программы, которые демонстрировали ввод данных из дискового файла, читали его целиком. Но можно представить себе ситуацию, когда вы захотите поступить с данными каким-либо другим образом.

Например, вам может понадобиться просмотреть дисковый файл в поисках определенной записи. В этом случае следует открыть файл с режимом доступа "r", а потом использовать цикл для постепенного ввода данных, структура за структурой или строка за строкой в зависимости от того, к какому типу относится информация, записанная в файл. Во время каждого прохождения цикла

Функции произвольного доступа

Компиляторы Си++ и многие компиляторы Си, поддерживающие стандарт ANSI, имеют функции произвольного доступа к файлу. Произвольный доступ означает, что вы можете перейти непосредственно к определенному месту файла для чтения или внесения изменений в данные, расположенные именно в этом месте. Перемещение указателя файла в заданную позицию выполняет функция fseek(). Если за ней следует, например, функция fread(), то она будет читать данные, начиная с позиции, отмеченной файловым указателем. Кроме того, функция ftell() сообщает текущее положение указателя, а функция rewind() переносит указатель в начало файла.

значения вводимых данных сравниваются с искомыми. Для проверки значений строк используйте функцию strcmp(), конечно, если ваш компилятор это позволяет. Как только искомые данные найдены, они выводятся на экран, после чего файл закрывается.

Функции работы с файлами, описанные в этой главе, выполняют последовательные операции. Это означает, что они выполняют чтение файла от его начала. Вы можете использовать режим доступа "a" для того, чтобы добавить данные в конец файла, но вы не можете перейти прямо к определенной позиции в файле, чтобы изменить хранящуюся там информацию.

Это не означает, что информацию, хранящуюся в файле, вообще нельзя изменить. Существует алгоритм, позволяющий обращаться к содержимому файла последовательно. Вы познакомитесь с этим и другими алгоритмами в многочисленных примерах, которые приведены в следующей главе.

<>

Вопросы

  1. Что такое файловый буфер?

  2. Как используется файловая структура?

  3. Для чего в программах используют указатель на файл?

  4. Опишите, в чем заключаются различия между режимами доступа "r", "w" и "a"?

  5. Почему необходимо закрыть файл перед завершением работы программы?

  6. Как вы будете выводить числовые данные?

  7. Как напечатать данные на принтере?

  8. В чем заключается различие между функциями fprintf() и fwrite()?

  9. Как осуществить печать структур?

  10. Для чего служит функция sizeof()?

<>

Упражнения

  1. Напишите программу, в которой функция fputs() используется для создания файла, содержащего названия кинофильмов.

  2. Напишите программу, которая читает названия кинофильмов (упражнение1) в массив строк.

  3. Напишите программу, в которой функция fprintf() используется для создания файла инвентарной описи, содержащей сведения о наименовании товара, его цене и количестве единиц, имеющихся в наличии.

  4. Напишите программу, которая читает файл инвентарной описи, созданный в упражнении 3.

  5. Отредактируйте программы из упражнений 3 и 4 так, чтобы они читали данные как структуры.

  6. Объясните, почему следующая программа написана неверно:

  7. #include "stdio.c"

  8. main()

  9. {

  10. FILE fp;

  11. char letter;

  12. if ((fp = fopen("MYFILE", "w")) == NULL)

  13. {

  14. puts("Невозможно открыть файл");

  15. exit();

  16. }

  17. do

  18. {

  19. letter = getchar();

  20. fputc(letter, fp);

  21. }

  22. while(letter != '\n');

  23. fclose(fp);

}

Соседние файлы в папке Информатика