КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Открытие и закрытие файлов
Функция ftell Функция #include <stdio.h> long int ftell(FILE *stream); возвращает положение указателя текущей позиции файла, связанного с потоком stream. Значение выдается в виде смещения в байтах относительно начала файла. Значение, возвращаемое ftell, можно в дальнейшем использовать при вызове функции fseek. Функция ftell возвращает положение указателя текущей позиции при успешном завершении. При ошибке возвращает-1L, и присваивает переменной errno положительное значение. Пример: #include<stdio.h>
int main(void) { FILE *stream; stream = fopen("DUMMY.FIL","w+"); fprintf(stream,"Это тест"); printf("Указатель файла: %ld ",ftell(stream)); return 0; } 9.2. Файловый ввод-вывод в языке С++
Для работы с файлами необходимо подключить библиотеку FSTREAM.H (которая в свою очередь подключает файл iostream.h). Для чтения данных из файла используется класс ifstream, являющийся потомком класса istream. Для записи данных в файл используется класс ofstream, являющийся потомком класса ostream. Для чтения данных и записи из файла используется класс fstream. Конструктор каждого из этих классов автоматически создает объект класса filebuf, управляющий низкоуровневой работой с файлом, включая поддержку буфера чтения. Функции классов ifstream, ofstream и iofstream приведены в таблице. Для открытия файла можно использовать конструкторы ifstream, ofstream или fstream. Форма записи: ИмяКласса ИмяОбъекта (СтрокаПутьФайл [, Флаг]) В качестве имени класса должен находиться любой класс, содержащий функции работы с файлами (например, ifstream или ofstream, istream или ostream, или fstream). В качестве ИмяОбъекта любой допустимый идентификатор. СтрокаПутьФайл представляет собой строку, содержащую информацию о месторасположении файла плюс его имя и расширение. При вводе имени файла с клавиатуры с указанием пути и расширения файла, если они требуются, данные вводятся в обычном виде, например: c:1date.txt Если же путь, имя файла и его расширение задаются в самой программе, то надо указывать их с использованием двойной наклонной черты, т.к. одиночная наклонная черта обозначает управляющий символ и путь будет прочитан неверно, например: fstream f(“c:\1\date.txt”,ios::in); ifstream fi(“c:\1\file1.doc”); ofstream fo(“file2.in”); наличие флага необязательно. Флаг используется, если необходимо изменить режим доступа к файлу.
Допускается объединение флагов с помощью операции побитового ИЛИ. Пример: ofstream fo1(“c:\file1.doc”, ios:: noreplace); ofstream fо2(“file2.in”, ios::app| ios::nocreate); В первом случае делается попытка создать объект fо1 и связать его с файлом file1.doc. Т.к. указан флаг ios:: noreplace, объект не будет создан, если файл существует, что предохраняет пользователя от нечаянного использования существующего файла для записи в него новых данных. Во втором случае делается попытка создать объект fо2 и связать его с файлом file2.in. Т.к. указан флаг ios::nocreate, объект не будет создан, если файл не существует, а если он существует, то после создания объекта данные будут заносится в конец файла (при этом исходные данные, хранимые в этом файле не уничтожаются). Для обмена данными с файлом можно использовать объект класса fstream. Например: fstream io(“fl.dat”,ios::in|ios::app); открывает файл для записи и чтения одновременно. Для закрытия файлов применяется метод close, который опорожняет поток и закрывает закрепленный за потоком файл. Пример: #include<iostream.h> #include<fstream.h> void main() { char name[12]; cout<<”Введите имя файла”<<endl; cin>>name; fstream f(name,ios::in); if(f) cout<<”Файл открыт успешно”; f.close(); } Для открытия файлов можно использовать функцию open. Пример: #include<iostream.h> #include<fstream.h> void main() { fstream f; char name[12]; cout<<”Введите имя файла”<<endl; cin>>name; f.open(name,ios::in); if(f) cout<<”Файл открыт успешно”; f.close(); } Параметры, требуемые функцией open, имеют тот же смысл, что и параметры конструкторов потока. Для записи данных в файл достаточно указать вместо потока cin имя объекта, связанного с файлом. Пример: #include<iostream.h> void main() { char name[30]; cout<<”Введите имя файла:”<<endl; cin>>name; fstream f; f.open(name, ios::out|ios::ate); f<<”Добавляем запись”; f.close(); } Класс istream Функции управления потоковым вводом сосредоточены в классе istream. С каждым из объектов этого класса и его производных связан объект класса streambuf. Функции класса istream, доступные его потомкам, перечислены в таблице.
Дата добавления: 2014-01-15; Просмотров: 532; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |