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.

  1. Atvērt failu lab20.1.cpp, nokompilēt un darbināt.

#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.

  1. Atvērt failu lab20.2.cpp (nepieciešamības gadījumā pievienot rindiņu systempause”);), nokompilēt un darbināt.

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.