Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функции ввода-вывода данных файлаСодержание книги Поиск на нашем сайте
1) Символьный ввод-вывод Для символьного ввода-вывода используются функции: int fgetc(FILE *fp);где fp – указатель на поток, из которого выполняется считывание. Функция возвращает очередной символ в формате int из потока fp. Если символ не может быть прочитан, то возвращается значение EOF. int fputc(int c, FILE*fp);где fp – указатель на поток, в который выполняется запись; c – переменная типа int, в которой содержится записываемый в поток символ. Функция возвращает записанный в поток fp символ в формате int. Если символ не может быть записан, то возвращается значение EOF. Пример 2. #include "stdafx.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ FILE *f; int c; char *filename="t.txt"; if ((f=fopen(filename,"r"))==0) perror(filename); else while((c = fgetc(f))!= EOF) putchar(c); //вывод с на стандартное устройство вывода fclose(f); system("pause"); return 0;}2) Строковый ввод-вывод Для построчного ввода-вывода используются следующие функции: char *fgets(char *s, int n, FILE *f);где char *s – адрес, по которому размещаются считанные байты; int n – количество считанных байтов; FILE *f – указатель на файл, из которого производится считывание. Прием байтов заканчивается после передачи n-1 байтов или при получении управляющего символа '\n'. Управляющий символ тоже передается в принимающую строку. Строка в любом случае заканчивается '\0'. При успешном завершении считывания функция возвращает указатель на прочитанную строку, при неуспешном – 0. int fputs(char *s, FILE *f);где char *s – адрес, из которого берутся записываемые в файл байты; FILE *f – указатель на файл, в который производится запись. Символ конца строки ('\0') в файл не записывается. Функция возвращает EOF, если при записи в файл произошла ошибка, при успешной записи возвращает неотрицательное число. Пример 3. Построчное копирование данных из файла f1.txt в файл f2.txt. #include "stdafx.h"#include <iostream>using namespace std;#define MAXLINE 255 //максимальная длина строкиint _tmain(int argc, _TCHAR* argv[]){//копирование файла in в файл out FILE *in, //исходный файл *out; //принимающий файл char buf[MAXLINE]; //строка, с помощью которой выполняется копирование in=fopen("f1.txt","r"); //открыть исходный файл для чтения out=fopen("f2.txt","w"); //открыть принимающий файл для записи while(fgets(buf, MAXLINE, in)!=0) //прочитать байты из файла in в строку buf fputs(buf, out); //записать байты из строки buf в файл out fclose(in); //закрыть исходный файл fclose(out);//закрыть принимающий файл system("pause"); return 0;}3) Блоковый ввод -вывод Для блокового ввода-вывода используются функции: int fread(void *ptr, int size, int n, FILE *f);где void * ptr – указатель на область памяти, в которой размещаются считанные из файла данные; int size – размер одного считываемого элемента; int n – количество считываемых элементов; FILE *f – указатель на файл, из которого производится считывание. В случае успешного считывания функция возвращает количество считанных элементов, иначе – EOF. int fwrite(void *ptr,int size, int n, FILE *f);где void * ptr – указатель на область памяти, в которой размещаются считанные из файла данные; int size – размер одного записываемого элемента; int n – количество записываемых элементов; FILE *f – указатель на файл, в который производится запись. В случае успешной записи функция возвращает количество записанных элементов, иначе – EOF. Пример 4. #include "stdafx.h"#include <iostream>using namespace std;struct Employee {char name[30]; char title[30]; float rate; };int _tmain(int argc, _TCHAR* argv[]){ Employee e; FILE *f; if((f=fopen("text.dat","w"))==NULL) { printf("\nФайл не открыт для записи"); } int n; //запись в файл printf("\nВведите количество записей N="); scanf("%d",&n); for(int i=0;i<n;i++) { //формируем структуру е printf("имя:");scanf("%s",&e.name); printf("наименование:");scanf("%s",&e.title); printf("налог:");scanf("%f",&e.rate); //записываем е в файл fwrite(&e,sizeof(Employee),1,f); } fclose(f); //чтение из файла if((f=fopen("text.dat","rb"))==NULL) printf("\nФайл не открыт для чтения"); while(fread(&e,sizeof(Employee),1,f)) printf("%s, %s, %f;\n", e.name, e.title, e.rate); fclose(f); system("pause"); return 0;}4) Форматированный ввод-вывод В некоторых случаях информацию удобно записывать в файл без преобразования, т.е. в символьном виде, пригодном для непосредственного отображения на экран. Для этого можно использовать функции форматированного ввода-вывода: int fprintf(FILE *f, const char *fmt,...);где FILE*f – указатель на файл, в который производится запись; const char * fmt – форматная строка; par1, par2,... – список переменных, в которые заносится информация из файла. Функция возвращает число переменных, которым присвоено значение. Пример 5. #include "stdafx.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ FILE *f; int n, nn,m; if((f=fopen("int.dat","w"))==0) perror("int.dat"); for(n=1;n<11;n++) fprintf(f, "\n%d %d", n, n*n); fclose(f); if ((f=fopen("int.dat","r"))==0) perror("int.dat"); m=1; while(fscanf(f, "%d %d",&n, &nn)&& m++<11) printf("\n%d %d",n,nn); fclose(f); system("pause"); return 0;}
|
||||
Последнее изменение этой страницы: 2021-07-18; просмотров: 114; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.236.144 (0.005 с.) |