Professional Documents
Culture Documents
Bài 13 Tập tin PDF
Bài 13 Tập tin PDF
NHP MN LP TRNH
ThS. ng Bnh Phng
dbphuong@fit.hcmus.edu.vn
TP TIN
VC
&
BB
Ni dung
Cc thao tc x l cn bn
Mt s hm qun l tp tin
Tp tin
VC
&
BB
Nhp xut
Khi nim
C lu d liu (bin, mng, cu trc, ) trong
b nh RAM.
D liu c np vo RAM v gi ra ngoi
chng trnh thng qua cc thit b (device)
Thit b nhp (input device): bn phm, con chut
Thit b xut (output device): mn hnh, my in
Thit b va nhp va xut: tp tin
VC
&
BB
Stream (dng)
Khi nim
L mi trng trung gian giao tip (nhn/
gi thng tin) gia chng trnh v thit b.
Mun nhn/gi thng tin cho mt thit b
ta s gi thng tin cho stream ni vi thit b
(c lp thit b).
Stream l dy byte d liu
Chy vo chng trnh gi l stream nhp.
Chy ra chng trnh gi l stream xut.
Tp tin
VC
&
BB
Stream (dng)
Phn loi
Stream vn bn (text)
Ch cha cc k t.
T chc thnh tng dng, mi dng ti a 255 k
t, kt thc bi k t cui dng \0 hoc k t
sang dng mi \n.
VC
&
Stream (dng)
BB
Stream
Thit b tng ng
stdin
Nhp chun
Bi phm
stdout
Xut chun
Mn hnh
stderr
Li chun
Mn hnh
stdprn (MS-DOS)
In chun
My in (LPT1:)
stdaux (MS-DOS)
Ph chun
Xut
Xut
Xut
Xut
ra
ra
ra
ra
mn hnh:
my in:
thit b bo li:
tp tin (stream fp):
fprintf(stdout, Hello);
fprintf(stdprn, Hello);
fprintf(stderr, Hello);
fprintf(fp, Hello);
Tp tin
VC
&
BB
Tp tin
Nhu cu
D liu gii hn v c lu tr tm thi
Nhp: g t bn phm.
Xut: hin th trn mn hnh.
Lu tr d liu: trong b nh RAM.
VC
&
BB
Tp tin
Khi nim
Tp hp thng tin (d liu) c t chc theo
mt dng no vi mt tn xc nh.
Mt dy byte lin tc ( gc lu tr).
c lu tr trong cc thit b lu tr ngoi
nh a mm, a cng, USB
Vn tn ti khi chng trnh kt thc.
Kch thc khng hn ch (ty vo thit b lu tr)
VC
&
BB
Tp tin
Phn loi
Theo ngi s dng: quan tm n ni dung
tp tin nn s phn loi theo phn m rng
.EXE, .COM, .CPP, .DOC, .PPT,
Theo ngi lp trnh: t to cc stream tng
minh kt ni vi tp tin xc nh nn s
phn loi theo cch s dng stream trong C
tp tin kiu vn bn (ng vi stream
vn bn) v tp tin kiu nh phn (ng vi
stream nh phn).
Tp tin
VC
&
BB
10
VC
&
BB
Tp tin
11
VC
&
BB
Quy tc t tn tp tin
Tn
(name)
M rng
(extension)
Khng bt buc.
Thng c 3 k t.
Thng do chng
trnh ng dng to
tp tin t t
Bt buc phi c.
H iu hnh MS-DOS: di ti a 8 k t.
H iu hnh Windows: di ti a 128 k t.
Gm cc k t A n Z, s 0 n 9, k t khc
nh #, $, %, ~, ^, @, (, ), !, _, khong trng.
Tp tin
12
VC
&
BB
nh v tp tin
ng dn
Ch n mt tp tin khng nm trong th mc
hin hnh. V d: c:\data\list.txt ch tp tin
list.txt nm trong th mc data ca a C.
Trong chng trnh, ng dn ny c ghi
trong chui nh sau: c:\\data\\list.txt
Du \ biu th k t iu khin nn th
hin n ta phi thm mt du \ trc.
Nhng nu chng trnh yu cu nhp ng
dn t bn phm th ch nhp mt du \.
Tp tin
13
VC
&
BB
14
VC
&
BB
Hm m tp tin
FILE *fopen(const char *filename, const char *mode)
Tp tin
15
VC
&
i s m tp tin (mode)
BB
i s ngha
b
r+
w+
a+
16
VC
&
BB
17
VC
&
BB
18
VC
&
BB
19
VC
&
BB
V d
Mt tp tin cha nhiu dng, mi dng l
thng tin mi sinh vin theo nh dng sau:
<MSSV>-<Tn>(<Phi>)tab<NTNS>tab<TB>
V d: 0312078-H. P. Trang(Nu) 17/06/85 8.5
20
VC
&
BB
Hm Tch 2 Mng
typedef struct SSinhVien {
char m_szMSSV[8];
// 0312078
char m_szHoTen[30];
// H. P. Trang
char m_cGioiTinh[4];
// Nu
char m_szNTNS[9];
// 17/06/85
float m_fDiemTB;
// 8.5
};
void main() {
SSinhVien sv;
FILE *fp = fopen(dssv.txt, rt);
if (fp != NULL) {
fscanf(fp, %[^-]-%[^(](%[^)])\t%[^\t]\t%f,
sv.m_szMSSV, sv.m_szHoTen, &sv.m_cGioiTinh,
sv.m_szNTNS, &sv.m_fDiemTB);
fclose(fp);
}
}
21
Tp tin
VC
&
BB
Hm nhp k t
int getc(FILE *fp) v int fgetc(FILE *fp)
c mt k t t stream fp.
getc l macro cn fgetc l phin bn hm
ca macro getc.
Thnh cng: tr v k t c c sau khi
chuyn sang s nguyn khng du.
Tht bi: tr v EOF khi kt thc stream fp
hoc gp li.
char ch;
FILE* fp = fopen(taptin.txt, rt);
if (fp != NULL)
ch = getc(fp); // ch = fgetc(fp);
Tp tin
22
VC
&
BB
Hm nhp chui
Int fgets(char *str, int n, FILE *fp)
c mt dy k t t stream fp vo vng
nh str, kt thc khi n-1 k t hoc gp
k t xung dng.
Thnh cng: tr v str.
Tht bi: tr v NULL khi gp li hoc gp
k t EOF.
char s[20];
FILE* fp = fopen(taptin.txt, rt);
if (fp != NULL)
fgets(s, 20, fp);
Tp tin
23
VC
&
BB
Hm xut k t
int putc(int ch, FILE *fp) v int fputc(in ch, FILE *fp)
Tp tin
24
VC
&
BB
Hm xut chui
int fputs(const char *str, FILE *fp)
25
VC
&
BB
26
VC
&
BB
27
VC
&
BB
Hm ng tp tin xc nh
int fclose(FILE *fp)
ng stream fp.
D liu trong stream fp s c vt (ghi
ht ln a) trc khi ng.
Thnh cng: tr v 0.
Tht bi: tr v EOF.
FILE* fp = fopen(taptin.txt, rt);
fclose(fp);
Tp tin
28
VC
&
BB
Hm ng tt c stream
int fcloseall()
fcloseall();
Tp tin
29
VC
&
BB
30
VC
&
BB
Khi nim
c to t ng khi m tp tin.
Xc nh ni din ra vic c/ghi trong tp tin
V tr con tr ch v
Khi tp tin cha m: u tp tin (gi tr 0).
Khi m tp tin:
cui tp tin khi m chn (mode a hay a+)
u tp tin (hay gi tr 0) khi m vi cc mode
khc (w, w+, r, r+).
Tp tin
31
VC
&
BB
32
VC
&
BB
Hm t li v tr con tr ch v
void rewind(FILE *fp)
t li v tr con tr ch v v u (byte 0)
tp tin fp.
Khng
FILE* fp = fopen(taptin.txt, w+);
fprintf(fp, 0123456789);
rewind(fp);
fprintf(fp, *****);
Tp tin
33
VC
&
BB
Hm ti nh v con tr ch v
int fseek(FILE *fp, long offset, ing origin)
34
VC
&
BB
Hm xc nh v tr con tr ch v
long ftell(FILE *fp)
Hm tr v v tr hin ti ca con tr ch v
(tnh t v tr u tin ca tp tin, tc l 0)
ca stream fp.
Thnh cng: tr v v tr hin ti ca con
tr ch v.
Tht bi: tr v -1L.
FILE* fp = fopen(taptin.txt, rb);
fseek(fp, 0L, SEEK_END);
long size = ftell(fp);
printf(Kich thuoc tap tin la %ld\n, size);
Tp tin
35
VC
&
BB
36
VC
&
BB
Cc hm qun l tp tin
37
VC
&
BB
Hm xa tp tin
int remove(const char *filename)
Xa tp tin xc nh bi filename.
Thnh cng: tr v 0.
Tht bi: tr v -1.
if (remove(c:\\vc.txt) == 0)
printf(Tap tin vc.txt da bi xoa!);
else
printf(Ko xoa duoc tap tin vc.txt!);
Tp tin
38
VC
&
BB
Hm i tn tp tin
39
VC
&
BB
Bi tp l thuyt
40
VC
&
BB
Bi tp l thuyt
41
VC
&
BB
Bi tp l thuyt
42
VC
&
BB
Bi tp l thuyt
43
VC
&
BB
Bi tp l thuyt
44
VC
&
BB
Bi tp l thuyt
45
VC
&
BB
Bi tp thc hnh
4
2 5 1 4
1 2 4 5
Tp tin
46
VC
&
BB
Bi tp thc hnh
47
VC
&
BB
Bi tp thc hnh
48