Как работать с файлами из программы
Работа с файлами строит по принципу сэндвича:
Понятие «открыть файл» означает «начать с ним работу», сделать его активным и забло-
кировать обращение других программ к этому файлу. При закрытии файла он освобождается(теперь с ним могут работать другие программы) и все ваши изменения вносятся на диск.Для работы с файлом используется специальная переменная, которая называется указателем на файл. Это адрес блока данных в памяти, в котором хранится вся информация об открытом файле. Объявляется указатель на файл так:
FILE *fp;
Чтобы открыть файл, надо вызвать функцию fopen, которая попытается открыть файл и записать его адрес в переменную fp. После этого все обращения к файлу выполняются не по имени файла, а через указатель fp.
fp = fopen ( "qq.dat", "r" );
Здесь файл qq.datиз текущего каталога открывается для чтения (режим "r"во втором параметре функции fopen). Если надо, можно указать полный (или относительный) путь к файлу,например так:
fp = fopen ( "c:\\data\\qq.dat", "r" );
Знак «наклонные черта» (слэш) в символьных строках всегда удваивается, потому что одиночный слэш – это специальный символ, например в сочетании \n.
Кроме режима "r"(чтение из файла) есть еще несколько режимов:
"r"Запись в новый файл. Если на диске уже есть файл с таким именем, он будет
предварительно удален.
"a"Добавление в конец файла. Если на диске уже есть файл с таким именем, новые
данные дописываются в конец файла. Если такого файла нет, то он будет создан.
"r+"Открыть существующий файл для изменения с возможностью записи и чтения
"w+"Создание нового файла для записи и чтения (если файл с таким именем уже есть,
он заменяется новым).
Иногда программа не может открыть файл. Если файл открывается на чтение, это возможно в
следующих случаях:
• неверно задано имя файла или файла нет на диске;
• файл используется другой программой и заблокирован.
Если файл открывается на запись, операция может закончиться неудачно, если
• на диске нет места;
• файл защищен от записи;
• неверно задано имя файла (например, оно содержит две точки, знак вопроса и т.п.).
Если файл не удалось открыть, функция fopenвозвращает специальное нулевое значение (нулевой указатель), который обозначается NULL. Поэтому надо всегда проверять правильностьоткрытия файла, особенно в режиме чтения. Если файл не был открыт, надо вывести сообщениеоб ошибке и выйти из программы.
if ( fp == NULL )
{
printf("Нет файла с данными");
return 1; // выход по ошибке, код ошибки 1
}
Если файл открыт, можно читать из него данные. Для того используем функцию fscanf. Она полностью аналогична scanf, но служит для ввода из файла, а не с клавиатуры. Кроме того, ее первый параметр – указатель на файл, из которого читаются данные.
n = fscanf ( fp, "%d", &A[i] );
Функция fscanfвозвращает результат – количество чисел, которые ей удалось прочитать.
Если мы запрашивали одно число, то значение переменой nможет быть равно единице (если все нормально) или нулю (если данные закончились или ошибочные, например, вместо чисел введено слово). Для успешного чтения данные в файле должны отделяться пробелом или символом перехода на новую строчку (он вставляется в файл при нажатии на клавишу Enter).
Если файл открыт на запись, можно записать в него данные с помощью.функции
fprintf, которая полностью аналогична printf.Когда работа с файлом закончена, надо закрыть его, вызвав функцию fclose:
Дата добавления: 2015-10-05; просмотров: 753;