|
Программирование >> Процедурные приложения
Режимы r+, w+ и а+ позволяют как читать данные из файла, так и осуществлять их запись. При переходе от считывания к записи не забудьте модифицировать текущую позицию указателя файла с помощью функций fsetpos (), fseek()или rewind() . f В языке С нет необходимости закрывать файлы, так как все открытые файлы закрываются автоматически по завершении программы. Впрочем, иногда требуется самостоятельно управлять этим процессом. Ниже показана версия предыдущего примера с добавлением функций закрытия файлов: * filel.c * Эта программа на языке С демонстрирует использование файлов как * ввода, так и для вывода данных. Программа читает значение переменной * forder price из файла customer.dat, вычисляет значение переменной * fbilling price и записывает его в файл billing.dat. #include <stdio.h> #define MIN DISCOUNT .97 #define MAX DISCOUNT .95 int main() { float forder price, fbilling price; FILE *fin,*fout; fin = fopen ( customer.dat , r ); fout = fopen( billing.dat , w ); while (fscanf (fin, %f ,&forder price) != EOF) { fprintf(fout, Для заказа на сумму \t$%8.2f\n , forder price); if (forder price < 10000) fbilling price = forder price * MIN DISCOUNT; else fbilling price = forderjirice * MAX DISCOUNT; fprintf(fout, цена со скидкой равна \t$%8.2f\n\n , fbilling price);} fclose(fin); fclose(fout) ; return(0);} Следующая программа, написанная на языке C++, выполняет те же функции, что и рассмотренная нами программа на языке С. file2.cpp Эта программа на языке C++ демонстрирует использование файлов как для ввода, так и для вывода данных. Программа читает значение переменной forder price из файла customer.dat, вычисляет значение переменной fbilling price и записывает его в файл billing.dat. #include <fstream.h> #include <iomanip.h> #define MIN DISCOUNT .97 #define MAX DISCOUNT .95 int main( ) { float forder price, fbilling price; ifstream fin( customer.dat ); ofstream fout( billing.dat ); fin >> forder price; while (Ifin.eofO){ fout << setiosflags(ios::fixed); fout << Для заказа на сумму\t\t$ << setprecision(2) << setw(8)<< forder price << \n ; if (forder price < 10000) fbilling price = forder price * MIN DISCOUNT; else fbilling price = forder price * MAXDISCOUNT; fout << цена со скидкой равна\t$ << setw(8) << fbilling price << \n\n ; fin >> forder price; fin. close () ; fout .close () ; return(0); Операции записи данных в файл и считывания информации из файла отличаются в языках C++ и С. Как видно из сравнения двух примеров, вместо вызова функции fopen () происходит создание двух объектов классов ifstream (содержит функции файлового ввода) и ofstream (содержит функции файлового вывода). Далее работа выполняется с помощью уже знакомых нам операторов >> и <<, а также функций форматирования setw(),setprecision () и setiosflags(). В целом в C++ для ввода/вывода данных посредством консолей и файлов используются те же операторы с тем же синтаксисом, что существенно упрощает программирование операций ввода/вывода - область программирования, всегда считавшаяся сложной и чреватой ошибками. Глава 5. Работа с данными Идентификаторы Ключевые слова Стандартные типы данных o Символы o Три типа целых чисел o Модификаторы signed и unsigned o Числа с плавающей запятой o Перечисления o Новый тип данных языка С++ - bool Квалификаторы o Квалификатор const o Директива #define o Квалификатор volatile o Одновременное применение квалификаторов const и volatile Преобразование типов данных o Явное преобразование типов Классы памяти o Объявление переменных на внешнем уровне o Объявление переменных на внутреннем уровне o Правила определения области видимости переменных o Объявление функций Операторы o Побитовые операторы o Операторы сдвига o Инкрементирование и декрементирование o Арифметические операторы o Оператор присваивания o Комбинированные операторы присваивания o Операторы сравнения и логические операторы o Условный оператор o Оператор запятая
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |