Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 108; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.176 (0.006 с.) |