Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функции ввода/вывода в текстовые файлы
Чтение символа из потока – getc, fgetc.
int getc(FILE *f); int fgetc(FILE *f); Функции возвращают очередной символ в форме int из потока f. Если символ не может быть прочитан, то возвращается значение EOF.
Запись символа в поток – putc, fputc.
int putc(int ch, FILE *f); int fputc(int ch, FILE *f); Функции записывают символ ch в поток f. При ошибке возвращается значение EOF, иначе – записанный символ.
Чтение строки из потока – fgets.
char *fgets(char *s, int n, FILE *f); Функция читает не более n-1 байт из потока f в строку s, прекращая чтение при обнаружении символа новой строки или конца файла. Символ новой строки при чтении не отбрасывается, а помещается в конец строки. Прочитанная строка дополняется ограничителем строки ('\0'). При обнаружении ошибки или конца файла возвращается NULL. При успешном завершении чтения функция возвращает указатель на строку s.
Запись строки в поток – fputs.
int fputs(const char *s, FILE *f); Функция записывает строку символов s в поток f. Символ конца строки в файл не записывается. При ошибке возвращает значение EOF, иначе – неотрицательное число.
Форматированный ввод из потока – fscanf.
Функция fscanf () имеет следующий прототип: int fscanf(FILE *f,const char *format[, address,...]); Она во всем аналогична функции scanf (), за исключением того, что форматированный ввод осуществляется не со стандартного устройства ввода, а из файлового потока f.
Форматированный вывод в поток – fprintf,
Функция fprintf () имеет следующий прототип: int fprintf(FILE *f, const char *format[, argument,...]) Она во всем аналогична функции printf (), но осуществляет форматированный вывод не на стандартное устройство вывода, а в файловый поток f.
1.2.7 Функция определения конца файла – feof ()
Функция feof () является на самом деле макросом и позволяет осуществлять проверку на достижение символа конца файла при операциях ввода-вывода. Она имеет следующий прототип: int feof(FILE *f); Она возвращает ненулевое значение, если был обнаружен конец файла при последней операции ввода в поток f и 0, если конец файла еще не достигнут. Рассмотрим пример файлового ввода и вывода. Перед использованием данной программы следует убедится в наличии файла D:\MyLoveFile.txt. Его можно создать с помощью редактора Блокнот:
FILE *in, *out; if ((in = fopen("D:\\MyLoveFile.txt", "rt")) == NULL)
{ printf(RUS("\nНевозможно открыть файл D:\MyLoveFile.txt.\n")); getch(); return 1; } if ((out = fopen("D:\\MyLoveFile.bak", "wt")) == NULL) { printf(RUS("\nНевозможно открыть файл D:\MyLoveFile.ВАК.\n")); getch(); return 1; } while (!feof(in)) fputc(fgetc(in),out); fclose(in); fclose(out); printf(RUS("Копия MyLoveFile.ВАК файла MyLoveFile.txt успешно создана.\n"));
Функции ввода/вывода с помощью объектов
Библиотека fstream.h предоставляет возможность программировать ввод и вывод в файл по аналогии с объектами cin и cout библиотеки iostream.h. Открытие файла для чтения осуществляется назначением объекта класса входных потоков: ifstream in("d:\Test1.txt"); Здесь in – имя объекта, который далее может использоваться подобно объекту cin, но информация будет читаться не с клавиатуры, а из файла, имя которого указано в скобках. Аналогично открывается файл для записи: ofstream out("d:\Test2.txt") Здесь out – имя объекта, который далее может использоваться подобно объекту cout, но информация будет записываться не на дисплей, а в файл, имя которого указано в скобках. Проверка открытия файла производится как проверка создания объекта, например: if(!in) //если файл не открывается или не создается { //работу программы закончить cout<<RUS("Файл не открыт\n"); getch(); return 1; } После завершения работы с файлом его следует закрыть: in.close();
Пример программы ввода/вывода с помощью библиотеки fstream
Допустим, что в файле хранятся сведения о мониторах. В каждой строке указан тип, оптовая и розничная цены и примечание. Для простоты данные в каждой строке записаны единообразно: первую строку занимает тип монитора, далее 2 строки целые числа, представляющие оптовую и розничную цены, затем строка – примечание. Приведенная ниже программа построчно считывает данные из текстового файла в буферную переменную s, затем суммирует оптовые и розничные цены и выводит результат на экран и в файл.
ifstream in("d:\\Test1.txt"); if(!in) {cout << RUS("Ошибка открытия входного файла"); getch();return 1;} ofstream out("d:\\Test2.txt"); if(!out) {cout << RUS("Ошибка открытия выходного файла"); getch();return 1;} char s[20][80]; int i=0,op=1,ros=2; while (!in.eof()) {in>>s[i];i++;}
float sop=0; float sros=0; while (op<i-1) {sop+=atof(s[op]);op+=4;} while (ros<i-1) {sros+=atof(s[ros]);ros+=4;} for(int j=0;j<i-1;j++) {out<<s[j]<<"\n"; cout<<RUS(s[j])<<"\n";} cout<<"\n"<<RUS("Сумма оптовых цен = ")<<sop; cout<<"\n"<<RUS("Сумма розничных цен = ")<<sros; out<<"\n"<<"Сумма оптовых цен = "<<sop; out<<"\n"<<"Сумма розничных цен = "<<sros; in.close(); out.close();
|
||||||
Последнее изменение этой страницы: 2021-11-27; просмотров: 48; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.29.89 (0.01 с.) |