Laboratorijas
darbs 20.1. Failu apstrāde binārā režīmā
Šajā laboratorijas darbā tiks izveidots un pēc tam nolasīts binārs fails.
#include <fstream>
using namespace std;
int main ()
{
fstream fout ("lab20.txt", ios::out);
int i=2007, k=255;
fout.write ((char*)&i, sizeof(int));
fout.write (reinterpret_cast<char*>(&k), sizeof(int));
fout.close ();
return 0;
}
Programmas darbības
rezultātā izveidojas fails lab20.txt, kura garums ir 8 baiti, kas satur
skaitļus 2007 un 255 binārā formā, līdz ar to tas nav izlasāms ar teksta resaktoru.
Programmas darbības
rezultātā tiek nolasīts fails lab20.txt, izdrukājot uz ekrāna tā saturu:
2007
255
3. Pārveidot 1. programmu (lab20.1.cpp) šādi:
· nomainīt izdrukas faila vārdu uz lab20a.txt.
· divu int skaitļu vietā, kas ir cieši iešūti programmā (2007 un 255) panākt, lai tiktu no klaviatūras ievadītas divas vērtības attiecīgi mainīgajos ar tipu int un char[100].
· Panākt, lai šīs abas vērtības tiktu izdrukātas failā šādā veidā: (a) vispirms int skaitli 1 baitā; (b) pēc tam ievadītā teksta (kas tiek glabāts char[100] tipa mainīgajā) garumu 1 baitā; (c) tad pašu tekstu, ieskaitot simbolu virknes beigu simbolu.
Piemērs. Ja no
klaviatūras ievada skaitli 99 un tekstu via, tad
faila garumam jābūt 1+1+3+1 = 6 baiti. Atverot teksta redaktorā jāvar izlasīt
tikai via.
4. Pārveidot 2. programmu (lab20.2.cpp) tā, lai tā varētu nolasīt skaitli un tekstu no faila (lab20a.txt) un izvadīt uz ekrāna.
Piemērs. Ja failā
saglabātas vērtības atbilstoši iepriekšējam piemēram (aiz punkta 3), tad uz ekrāna jāizvada:
99
via
Pareizie programmu varianti: lab20.1a.cpp, lab20.2a.cpp.
5. Pārveidot abas programmas vēlreiz tā, lai tās zema līmeņa simbolu virknes vietā izmantotu augsta līmeņa simbolu virknes, izvadot/ievadot no fails lab20b.txt.
· no augsta līmeņa simbolu virknes var iegūt zemā līmeņa simbolu virkni, izmantojot funkciju c_str(), kas ir string objekta iekšējā funkcija.
· no zema līmeņa simbolu virknes var iegūt augsta līmeņa simbolu virkni, padodot augsta līmeņa simbolu virknei to kā parametru konstruktorā.
Pareizie programmu varianti: lab20.1b.cpp, lab20.2b.cpp.
6. Pārveidot nolasošo programmu tā, lai tā, izmantojot funkciju seekg(), noskaidro, kāds ir otrais no beigām simbols failā.
Dotajā piemērā tas ir burts i
Laboratorijas
darbs 20.2. Uzdevumi komponenšu failu (failu ar fiksēta garuma ierakstiem)
binārā apstrādē
20.2.1. Izveidot bināru failu no int tipa skaitļiem (katram skaitlim sizeof(int) baiti). Skaitļi tiek ievadīti no klaviatūras.
20.2.2. Dots binārs fails no int tipa skaitļiem (katram skaitlim sizeof(int) baiti). Izveidot funkciju, kas izrēķina failā glabāto skaitļu summu.
20.2.3. Dots binārs fails no double tipa skaitļiem (katram skaitlim sizeof(double) baiti). Izveidot funkciju, kas aprēķina failā glabātā lielākā un mazākā skaitļa starpību.
20.2.4. Dots binārs fails no int tipa skaitļiem (katram skaitlim sizeof(int) baiti). Izveidot funkciju, kas apmaina vietām pirmo un pēdējo ierakstu.
20.2.5. Dots binārs fails no int tipa skaitļiem (katram skaitlim sizeof(int) baiti). Izveidot funkciju, kas apmaina vietām ierakstus ar attiecīgi lielāko un mazāko vērtību.