|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Создание, открытие, закрытие и удаление файловРабота с файлами складывается из трех шагов. 1. Файл открывается. Это означает, что программа "захватывает" заданный по имени файл, сообщает Windows, что далее она будет с ним работать. Данный шаг нужен, чтобы не возникало конфликтов, когда несколько программ одновременно хотят записывать информацию в один и тот же файл. Правда, считывать данные из файла, очевидно, допустимо одновременно множеством программ, поэтому в операции открытия файла обычно уточняется, что файл открывается "на чтение" (считывание информации, которая не меняется) либо "на запись" (данные в файле модифицируются). 2. Ведется работа с файлом. Из него данные либо считываются, либо в него записываются. 3. Файл закрывается. После этой операции он снова доступен другим программам для обработки. Стандартные операции работы с файлами, существующие практически во всех реализациях Си, хранятся в библиотеке stdio.h. Функция открытия файла называется fopen(). Она возвращает указатель на объект стандартного (определенного в данной библиотеке) типа FILE. Допустим, мы хотим создать в текущем каталоге проекта новый текстовый файл и записать в него два числа и строку. Пусть этот файл будет называться test.txt. Параметр открытия файла на запись в текстовом виде записывается строкой "wt". Буква w означает write (писать), буква t -- text (текст). Если такой файл в каталоге существует, он перезаписывается (все старое содержимое в нем уничтожается), если он не существует, то создается исходно пустым. Тогда команда открытия (создания пустого) файла запишется так: FILE * fo; Можно задать и полный путь к файлу, например: fo = fopen("c:\\tmp\\test.txt","wt"); Не забываем, что одиночный символ \ внутри строки Си задается двумя наклонными слэшами \\. Это частая ошибка. После открытия файла в файловую переменную fo занесется некоторое число. Если таким числом будет ноль, считается, что файл открыть не удалось. В Си нередки записи вида if((fo=fopen("c:\\tmp\\test.txt","wt")) == 0) { где одновременно открывается файл и проверяется, успешно ли это сделано. Закрывается файл с помощью функции fclose(): Запись текстовой строки в файл выполняет функция fprintf(): Формат - это текстовая строка, задающая формат записываемого в файл текста. Все, что содержится в этой строке, пишется в файл один-в-один: fprintf(fo, "Привет!"); В этом случае в файл запишется строка "Привет!", а так как никаких значений переменных в данном случае мы не выводим, то и список выводимых переменных отсутствует. Чтобы вывести значение некоторой переменной, надо использовать элемент формата, который начинается с символа %. Так, формат %d задает вывод целочисленного значения, формат %s - вывод строки. int n = 10; В файл запишется строка ""Вывод: значение переменной n равно 10". Вместо формата %s подставлено значение переменной str, а вместо формата %d - значение переменной n. Для вывода дробных чисел используют формат %f, где перед f ставят число всех выводимых символов и число символов после запятой, разделенные точкой. Например: "%5.2f" означает вывод числа из пяти позиций, причем две из них будут отведены для дробного значения. Если оно не уместится в этих позициях, то вылезет за границу, а если займет меньше, то дополнится пробелами (хотя в разных реализациях может быть по разному). Следующая программка записывает в файл 100 строк с числами. Результирующий файл будет текстовым, его можно открыть и просмотреть, например, в Блокноте. FILE * fo; Комбинация символов "\n" в конце строки формата означает перевод на новую строку в выводимых текстовых данных. Для ввода данных (текстовой строки) используют функцию fscanf(). Она напоминает fprintf(): fscanf(файловая-переменная, формат-ввода, список-адресов-переменных) При вводе список адресов переменных отличается от списка имен переменных. Если в Си указывается имя переменной, то подразумевается значение этой переменной. Но при вводе нужно не значение, а местонахождение области в памяти, отведенной для заданной переменной - чтобы в эту область поместить новое значение, считанное из файла. Операция &, примененная к имени переменной, возвращает адрес этой переменной в памяти. Тогда операцию ввода числа из текстового файла fi в целочисленную переменную n можно записать так: fscanf(fi, "%d", &n); Формат записывается также, как и в случае с fprintf, а вот перед именем переменной n дополнительно указывается операция получения адреса &. Полезная функция feof(файловая-переменная) возвращает 1 (истинное значение), если файл, открытый для считывания, закончился. Она возвращает 0, если из файла еще можно продолжать ввод. Программа считывания из файла всех строк с числами запишется так: FILE * fi;
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |