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