КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Блоковый ввод-выводДля блокового ввода-вывода используются функции: 1) int fread(void*ptr,int size, int n, FILE*f), где void*ptr – указатель на область памяти, в которой размещаются считанные из файла данные, int size – размер одного считываемого элемента, int n – количество считываемых элементов, FILE*f – указатель на файл, из которого производится считывание. В случае успешного считывания функция возвращает количество считанных элементов, иначе – EOF. 2) int fwrite(void*ptr,int size, int n, FILE*f), где void*ptr – указатель на область памяти, в которой размещаются считанные из файла данные, int size – размер одного записываемого элемента, int n – количество записываемых элементов, FILE*f – указатель на файл, в который производится запись. В случае успешной записи функция возвращает количество записанных элементов, иначе – EOF. Пример: struct Employee { char name[30]; char title[30]; float rate; }; void main() { Employee e; FILE *f; if((f=fopen(“f.dat”,”wb”))==NULL) { cout<<”\nCannot open file for writing”; exit(1); } int n; //запись в файл printf(“\nN-?”); scanf(“%d”,&n); for(int i=0;i<n;i++) { //формируем структуру е printf(“\nname:”);scanf(“%s”,&e.name); printf(“\ntitle:”);scanf(“%s”,&e.title); printf(“\nrate:”);scanf(“%s”,&e.rate); //записываем е в файл fwrite(&e,sizeof(Employee),1,f); } fclose(f); //чтение из файла if((f=fopen(“f.dat”,”rb”))==NULL) { cout<<”\nCannot open file for reading”; exit(2); } while(fread(&e,sizeof(Employee)1,f) { printf(“%s % s%f”, e.name, e.title, e.rate) } fclose(f); } Форматированный ввод-вывод В некоторых случаях информацию удобно записывать в файл без преобразования, т. е. в символьном виде пригодном для непосредственного отображения на экран. Для этого можно использовать функции форматированного ввода-вывода: 1) int fprintf(FILE *f, const char*fmt,. . .) , где FILE*f – указатель на файл, в который производится запись, const char*fmt – форматная строка, . . . – список переменных, которые записываются в файл. Функция возвращает число записанных символов. 2) 1) int fscanf(FILE *f, const char*fmt, par1,par2, . . .) , где FILE*f – указатель на файл, из которого производится чтение, const char*fmt – форматная строка, par1,par2,. . . – список переменных, в которые заносится информация из файла. Функция возвращает число переменных, которым присвоено значение. Пример: void main() { FILE *f; int n; if((f=fopen(“int.dat”,”w”))==0) { perror(“int.dat”); exit(0); } for(n=1;n<11;n++) fprinf(f,”\n%d %d”,n,n*n); fclose(f); if((f=fopen(“int.dat”,”r”))==0) { perror(“int.dat”); exit(1); } int nn; while(fscanf(f, ”%d%d”,&n,&nn)) printf(“\n%d %d”,n,nn); fclose(f); }
|