Файловая операция ввода/вывода Stream-библиотека C++


Download 24.16 Kb.
bet4/4
Sana02.02.2023
Hajmi24.16 Kb.
#1146874
1   2   3   4
Bog'liq
ОГЛАВЛЕНИЕ

ФУНКЦИЯ-ЭЛЕМЕНТ ЧТЕНИЕ
Прототип перегруженной функции-элемента гласил:
ostream& read( char* buff, int num);
ostream& read( unsigned char* buff, int num);
ostream& read( unsigned char* buff, int num);
Параметр buff — это указатель на буфер, который получает данные из входного потока. Параметр num указывает число считываемыхx из потока байт.
Праймер 5.
константа МАКС = 80;
усиление чар [MAX+1];
внутр. лен;
fпоток f;
f.open ("CALC.DAT", ios::in | ios::binary);
f.read ((unsigned char*) &len, sizeof(len));
f.read ((unsigned char*) buff, len);
е. закрыть ();
В этом примере учитывается информация, записанная в предыдущем примере.
ФАЙЛОВЫЙ ВВОД/ВЫВОД С ПРЯМЫМ ДОСТУПОМ
Файловые операции во вводе/вводе прямого доступа также используют потоковые функции — элементарные чтение и запись, представленные в предыдущем разделе. Stream-библиотека имеет ряд функций, позволяющих контроллеру отображать поток в любой желаемой позиции. Функция-элемент seekg - простая функция поиска.
ПОИСК ФУНКЦИОНАЛЬНОГО ЭЛЕМЕНТА
Прототип для перегруженной функции-компонента seekg:
& seekg( длинная позиция);
& seekg( длинное смещение, seek_dir dir);
Параметр pos и первая версия определяют абсолютную позицию байта и потока. Во второй версии параметр offset определяет относительное смещение, и оно зависит от аргумента. Аргументы для последнего параметра:
ios:: beg S начал файл
ios:: cur Файл положения касательной
ios:: конец файла консоли S
Праймер 6.
константа BLOCKSIZE = 80
char buff[BLOCK_SIZE] = "Привет, мир!";
f.open ("CALC.DAT", ios::in | ios::out | ios::binary);
f.seekg (3 * BLOCK_SIZE); // продвинутся к блоку 4
f.read ((const unsigned char*)buff, BLOCK_SIZE);
cout < buff < endl;
закрыть();
ОПИСАНИЕ 10-МЕСЯЧНОЙ ЛАБОРАТОРНОЙ РАБОТЫ
Задание: Дан файл, содержащий сведения или личную коллекцию книголюба. Каждая запись содержит поля - шифровальная книга, автор, имя, год издания, местоположение (номерная стойка, шкаф и т.п.). Напишите программу, просмотрите следующую информацию:
- местоположения книги автора X названия Y;
- список авторов З., находящихся в коллекции;
- число книг издания XX года.
Значения книг X, Y, Z и год издания вводятся по запросу с терминала.
Листинг программного обеспечения:
#include
#include
#include
структурировать книги
{
идентификатор символа [ 100];
char автор[ 100 ];
заголовок символа [ 100 ];
инт доп;
интервал n_closet;
интервал n_полка;
};
отменить add_book ( )
{
книги буф;
ofstream f("lab_10.dat ", ios:: app);
символ с [ 100 ];
memset(&buf, 0,sizeof (книг));
cout<< "Посмотреть информацию о книге:"<cout<<"\t пароль : ";
cin.getline (s,sizeof(s));
cin.getline (s,sizeof(s));
strcpy(buf.id,s );
cout<<"\t автор : ";
cin.getline (s,sizeof(s));
strcpy( buf.автор ,с);
cout <<"\t имя: ";
cin.getline (s,sizeof(s));
strcpy( buf.title ,s);
cout<<"\т боже издание : ";
cin>>buf.dop;
cout<<"\t местоположение :\n\t\t № шкафа : ";
cin>> buf.n _closet;
cout<<"\t\tНомер полка : ";
cin>> buf.n _полк;
f.write ((char *)&buf,sizeof(books));
е. закрыть ();
}
аннулировать show_book ( )
{
книги буф;
если поток f("lab_10.dat");
char автор_х[100 ], заголовок_у[ 100];
cout<<" Введите Автор книга : ";
cin.getline (author_x,sizeof(author_x));
cin.getline (author_x,sizeof(author_x));
cout<<" Введите название книга : ";
cin.getline (title_y, sizeof (title_y));
для( ;;)
{
memset(&buf, 0,sizeof (книг));
f.read ((char *)&buf,sizeof(books));
если ( f.eof( ) ) перерыв;
если((* buf.author ==*author_x) && (*buf.title==*title_y))
cout<<"\n Местоположение книги :\n\t № Шкафа : "<<буф.н_шкафа<<"\n\tНо полка : "<<буф.н_полки;
}
е. закрыть ();
cout<<"\n\nНажмите любую клавишу, чтобы продолжить...";
получить( );
}
пустота show_author ( )
{
книги буф;
char автор_z [ 100 ];
если поток f("lab_10.dat");
cout<<" Введите Автор книга : ";
cin.getline (author_z,sizeof(author_z));
cin.getline (author_z,sizeof(author_z));
клрскр( );
cout<< "Список книг автора"<для( ;;)
{
memset(&buf, 0,sizeof (книг));
f.read ((char *)&buf,sizeof(books));
если( f.eof( )) перерыв;
если(* buf.автор ==*автор_z)
cout<<"\t"<< buf.title <<", "<}
е. закрыть ();
cout<<"\nНажмите любую клавишу, чтобы продолжить...";
получить( );
}
недействительным show_num ( )
{
книги буф;
int dop_xx ,k =0;
если поток f("lab_10.dat");
cout<< "Введите год издания: ";
cin >>доп _xx;
клрскр( );
для( ;;)
{
memset(&buf, 0,sizeof (книг));
f.read ((char *)&buf,sizeof(books));
если( f.eof( )) перерыв;
если(buf.dop==dop_xx) k++;
}
е. закрыть ();
cout <<"Название книги "<cout<<"\n\nНажмите любую клавишу, чтобы продолжить...";
получить( );
}
недействительный основной (пустой)
{
# определить столбец 5
выбор между я ;
char menu[col ][ 100]={"1. Коллекция книг и коллекция",
"2. Позать местаположения книги",
"3. Показать список авторов",
"4. Позать число книг",
"5. Выход "};
цвет текста( 10 );
делать
{
клрскр( );
for(i= 0;i cout<<" Промыть выбор : ";
цин>>выбор;
клрскр( );
переключатель (выбор)
{
случай 1: добавить_книгу ( );перерыв;
случай 2: show_book ( );перерыв;
случай 3: show_author ( );перерыв;
случай 4: show_num ( );перерыв;
по умолчанию : ;
}
}
в то время как ( выбор! = 5);
}
В программе описывается структура книги, содержащая поля - шифр книги, автор, название, год издания, местоположение (номер кабинета, номер полка). Управление программой происходит из меню. Процедура add_book ( ) открывает файл в режиме добавления, записывает клавиатурный пароль book, автора, имя, версию God и топологию. Затем записывает данные в файл. Процедура show_book ( ) открывает файл и выполняет поиск, записывает в консоль автора и книгу заголовков и производит поиск и файл. Если найти книгу по заданным условиям вывести на экран местоположение книги (номерной шкаф и номерная полка) . Процедура show_author ( ) записывает книгу автора на терминал, производит поиск коллекции, отображает список книг данного автора и отображает коллекцию. Процедура show_num ( ) подсчитывает число книг введенного года издания.
Download 24.16 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling