Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Неформатированные файловый ввод-вывод

Читайте также:
  1. Введение в программирование на языке Pascal Работа с величинами. Ввод-вывод Выражения. Линейные алгоритмы
  2. ВВОД-ВЫВОД
  3. Ввод-вывод матриц
  4. Ввод-вывод чисел, символов и строк на консоль. Переключение ввода-вывода, работа с файлами.
  5. Задание 1. Ввод-вывод переменных.
  6. Занятие № 21. Файловый тип.
  7. Понятие физического и логического файла, файловый тип данных. Текстовые типизированные и нетипизированные файлы. Описание файловых типов.
  8. Потоковый ввод-вывод
  9. Строковые константы, массивы символьных строк и их инициализация. Указатели и строки, ввод-вывод и обработка строк.

 

Запись в файл

fwrite( адрес записываемой величины, размер одного экземпляра, количество записываемых величин, имя логического файла );

Функция fwrite() возвращает число реально записанных элементов, которое при успешном выполнении функции будет равно числу затребованных элементов. Если же элементов записано меньше, чем указано при вызове, произошла ошибка.

Например,

fwrite(&dat, sizeof(int), 1, f);

 

Чтение из файла

fread( адрес величины, размер одного экземпляра, количество считываемых величин, имя логического файла );

Функция fread() возвращает число реально прочитанных элементов. Если оказалось, что прочитано меньше элементов, чем требовалось при вызове, значит, либо произошла ошибка при выполнении операции, либо был достигнут конец файла. Определить, что именно произошло, можно с помощью функции feof() или ferror().

Например,

fread(&dat, sizeof(int), 1, f);

Закрытие файла

Перед завершением программы открытый файл следует закрыть во избежание в нем потери данных. Это достигается функцией fclose(), которая принимает указатель на файл и возвращает значение 0 при успешном закрытии файла, иначе значение EOF.

fclose( имя логического файла );

Пример 1. Заполнить файл некоторым количеством целых случайных чисел.

#include <iostream>

#include <time.h>

#include <cstdlib>

#include <cstdio>

using namespace std;

int main()

{

FILE *f; int dat;

srand(time(0));

int n=rand()%30 + 1;

cout << "File name? ";

char s[20];

cin.getline(s, 20);

f=fopen(s, "wb");

for (int i=1; i<=n; i++)

{ dat = rand()%101 - 50;

cout << dat << " ";

fwrite(&dat, sizeof(int), 1, f);

}

cout << endl;

fclose(f);

return 0;

}

Пример 2. Найти сумму и количество целых чисел, записанных в бинарный файл.

#include <iostream>#include <cstdio> using namespace std; int main(){

FILE *f;

int dat, n=0, sum=0;

cout << "File name? ";

char s[20];

cin.getline(s, 20);

f=fopen(s, "rb");

while (fread(&dat, sizeof(int), 1, f))

{n++;

cout << dat << " ";

sum+=dat;

}

cout << endl;

cout << "sum: " << sum << "; number: " << n << endl;

fclose(f);

system("PAUSE");

return 0;}

Если файл был открыт для двоичных данных, то fread() и fwrite() могут читать и писать любой тип информации.

Пример 3. Поместить в файл n записей, содержащих сведения о кроликах, содержащихся в хозяйстве: пол (m/f), возраст (в мес.), масса.

#include <iostream>

#include <cstdio>

using namespace std;

struct krolik

{

char pol;

int vozrast;

double massa;

};

int main()

{

FILE *f; krolik dat; int n;

cout << "File name? ";

char s[20];

cin.getline(s, 20);

f=fopen(s, "wb");

cout << "How many rabbits? "; cin >> n;

for (int i=1; i<=n; i++)

{ cout << "What sex " << i << "th rabbit? "; cin >> dat.pol;

cout << "How old " << i << "th rabbit? "; cin >> dat.vozrast;

cout << "What is the mass of the " << i << "th rabbit? ";

cin >> dat.massa;

fwrite(&dat, sizeof(krolik), 1, f);

}

fclose(f);

return 0;

}

 

Пример 3 (продолжение). В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве: пол (m/f), возраст (в мес.), масса. Найти наиболее старого кролика. Если таких несколько, то вывести информацию о том из них, масса которого больше.




Дата добавления: 2014-12-19; просмотров: 109 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав