Professional Documents
Culture Documents
C++
mr. sc. Jasminka Tomljanovi, vii predava
Veleuilite u Rijeci
Sadraj
Datoteke
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
Veleuilite u Rijeci
Veleuilite u Rijeci
Veleuilite u Rijeci
d.open(prva.dat,ios::in|ios::binary)
Datotenom objektu d pridruena je
stvarna datoteka prva .dat
Datoteka je otvorena za itanje u
binarnom nainu
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
Veleuilite u Rijeci
Datoteni pokaziva
datoteni pokaziva sadri poziciju unutar
datoteke gdje se moe obaviti operacija itanja
ili upisa u datoteku
pozicija je izraena u cijelom broju bajtova od
poetka datoteke do mjesta upisa/itanja
C++ razlikuje datoteni pokaziva za itanje
datoteke od datotenog pokazivaa za upis u
datoteku
Funkcije za oitavanje vrijednosti datotenog
pokazivaa (tipa tell):
tellg() - vrijednost pokazivaa za itanje
datoteke
tellp() - vrijednost pokazivaa za upis u
6
datoteku
mr.11/12/16
sc.Jasminka
Tomljanovi, vii predava
Veleuilite u Rijeci
Primjer 1:
d.open (prva.dat", ios::in);
//otvaranje datoteke za itanje
cout << d.tellg() << endl;
//0 -vrijednost dat. pokazivaa za
itanje
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
Veleuilite u Rijeci
Npr.:
d.open ("d.dat", ios::out);
//otvaranje dat. za upis podataka
cout << d.tellp() << endl;
//0 -vrijednost dat. pokazivaa za upis
otvaranjem datoteke u modu out
datoteni pokaziva za upis postavlja
se na poetak datoteke.
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
Veleuilite u Rijeci
Veleuilite u Rijeci
Npr.:
d.open ("d.dat", ios::in);
// otvaranje datoteke za itanje
d.seekg (5* sizeof(slog));
// postavlja datoteni pokaziva za
itanje
// na slog s rednim brojem 5
datoteni pokaziva za itanje postavlja
se na poziciju sloga s rednim brojem 5
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
10
Veleuilite u Rijeci
11
Veleuilite u Rijeci
Mod in
koristi se za otvaranje datoteke za
itanje
otvara
postojeu
datoteku,
a
datoteni pokaziva za itanje se
postavlja na 0 (poetak datoteke)
ako datoteka sa zadanim stvarnim
imenom
ne
postoji
na
disku,
otvaranje ne uspijeva, to se moe
provjeriti
stanjem
datotenog
objekta:
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
12
Veleuilite u Rijeci
d.open(prva.dat",ios::in);
if (!d)
cout << "Otvaranje nije uspjelo,
datoteka ne postoji na disku!" << endl;
else
cout << "Datoteka je otvorena!" <<
endl;
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
13
Veleuilite u Rijeci
Mod out
koristi se za otvaranje datoteke za upis
podataka
datoteni pokaziva za upis se postavlja na 0
(poetak datoteke)
stvara se nova datoteka na disku ili se
postojea brie
14
Veleuilite u Rijeci
Mod noreplace
Datoteka nee biti otvorena , ako ve
postoji na disku:
d.open(prva.dat",ios::out
ios::noreplace);
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
15
Veleuilite u Rijeci
16
Veleuilite u Rijeci
Mod trunc
brie sadraj postojee datoteke:
d.open(prva.dat",ios::out
ios::trunc);
17
Veleuilite u Rijeci
d.open(prva.dat",ios::app);
// otvara datoteku za dodavanje novih
mr. sc.Jasminka Tomljanovi, vii predava
zapisa
11/12/16
18
Veleuilite u Rijeci
Veleuilite u Rijeci
Mod binary
otvara datoteku u binarnom nainu rada
nema
konverzija
kod
upisa/itanja
podataka kao kod tekstualnog naina
rada
(bitovni
sadraj
ostaje
nepromijenjen)
dat.open
("datoteka.dat",ios::in|
ios::binary);
//otvara ulaznu datoteku u binarnom modu
Binarni nain rada koristi se kod datoteka s
fiksnom veliinom sloga jer bi svaka
20
eventualna
mogla sadraj zapisa
mr.11/12/16
sc.Jasminka
Tomljanovi, viikonverzija
predava
Veleuilite u Rijeci
Tekstualna datoteka
Tekstualne datoteke sastoje se od podataka
znakovnog tipa (redova teksta)
svaki red zavrava kontrolnim znakovima
CR (Carriage Return; ASCII kod 13; prebacuje
kursor na poetak reda) i
LF (Line Feed; ASCII kod 10; pomie kursor u
slijedei red)
zajedno, CR i LF ine znak EOLN - znak za kraj
reda
Veleuilite u Rijeci
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
22
Veleuilite u Rijeci
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
void main(){
fstream d;
d.open("C:\\DATOTEKE\\tekst.txt",ios::out);
d<< "Ovo je prvi red teksta u tekstualno
datoteci." << endl;
d << "Ovo je drugi red." << endl;
int a = 13;
d << a << endl;
d.close();
23
mr.11/12/16
}sc.Jasminka Tomljanovi, vii predava
Veleuilite u Rijeci
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
24
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
void main(){
char red[80];
fstream d;
d.open("C:\\DATOTEKE\\tekst.txt",ios::in);
while(d){
d.getline (red,sizeof(red),'\n'); //itanje reda i
datoteke
cout << red << endl; // ispis na ekran
};
d.close();
25
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
Veleuilite u Rijeci
Veleuilite u Rijeci
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
26
Veleuilite u Rijeci
27
Veleuilite u Rijeci
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
28
Veleuilite u Rijeci
29
Veleuilite u Rijeci
Veleuilite u Rijeci
write
d.open
(studenti.dat",
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
ios::binary); //otvaranje
ios::out
31
Veleuilite u Rijeci
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
struct student
// tip zapisa koje sadri
datoteka
{
unsigned long int mat_br;
int g_upisa;
char prez_ime[35];
};
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
32
Veleuilite u Rijeci
student s;
// varijabla iji se sadraj upisuje /ita
u/iz datoteke
fstream datoteka;
// datoteni objekt
char naziv_datoteke[40];
// fiziko ime datoteke
void kreiranje_datoteke()
{
cout<<"Unesite naziv datoteke u koju cete spremati
podatke: ";
cin>>naziv_datoteke;
datoteka.open(naziv_datoteke, ios::out | ios::binary);
if (!datoteka)
// ako datoteka ne postoji na
disku obavjest o tome
cout<<"Neuspjesno otvaranje datoteke!";
else
mr.11/12/16
sc.Jasminka
Tomljanovi, vii predava
datoteka.close
();
// u protivnom zatvaram 33
void unos_podataka_u_datoteku
Veleuilite
u Rijeci
()
34
Veleuilite u Rijeci
void ispis_podataka_o_svim_studentima ()
{
datoteka.open(naziv_datoteke, ios::in | ios::binary);
cout<<endl<<"Ispis svih podataka"<<endl;
cout<<"----------------------------------------------"<<endl;
do
{
datoteka.read((char *)&s, sizeof (s)); // proitaj slog iz
datoteke
if(datoteka.eof()) break;
// ako je u itanju dolo do kraja
datoteke, prekini
cout<<"Maticni broj:"<<"\t"<<s.mat_br<<endl;
cout<<"Prezime i ime:"<<"\t"<<s.prez_ime<<endl;
cout<<"Godina upisa:"<<"\t"<<s.g_upisa<<endl;
cout<<"----"<<endl;
} while (!datoteka.eof());
datoteka.close ();
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
35
Veleuilite u Rijeci
void main()
{
kreiranje_datoteke ();
unos_podataka_u_datoteku ();
ispis_podataka_o_svim_studentima
();
}
mr.11/12/16
sc.Jasminka Tomljanovi, vii predava
36
Veleuilite u Rijeci
Unesite naziv datoteke u koju cete spremati podatke: C:\DATOTEKE\studenti.ini
Upisite podatke:
Maticni broj: 1
Prezime i ime: Ivo Ivic
Godina upisa: 2006
Dalje (d/n)? d
Maticni broj: 5
Prezime i ime: Ana Anic
Godina upisa: 2007
Dalje (d/n)? n
Ispis svih podataka
---------------------------------------------Maticni broj: 1
Prezime i ime: Ivo Ivic
Godina upisa: 2006
---Maticni broj: 5
Prezime i ime: Ana Anic
Godina upisa: 2007
---any keyTomljanovi,
to continuevii
. . .predava
mr.Press
11/12/1
sc.Jasminka
37