1
LP TRÌNH CĂN BN
KIU TP TIN
2
Nidung chươngnày
lMt skhái nim vtptin
lCác thao tác trên tptin
lTruy cp tptin văn bn
lTruy cp tptinnhphân
3
Mt skhái nim vtptin (file) (1)
lTi sao ta cn đến kiu tptin?
lCho phép lưu trdliubnhngoài(đĩa).
lKhi kết tc chương trình thìdliu vn còndo
đóchúng ta cóthsdng nhiu ln.
lKích thước ln dliu không hn chế.
4
Mt skhái nim vtptin (file) (2)
lCó3loi dliu kiu tptin:
lTptin văn bn(Text File)
lDùng để ghi các ký t lên đĩa(dưới dng mã Ascii)
lCócha:
lKý hiu\n:xung dòng
lKítEOF (End Of File)cómã Ascii là26:nmcui tptin
lTptin đnh kiu(Typed File)
lGm nhiu phn tcócùng kiu: char,int, long,struct
lĐược lưu tr trên đĩa dưới dng mt chui cácbyteliên tc.
lTptin không định kiu(UntypedFile)
lGm các cu trúc dliu mà ta không quan tâm đến nidung
hoc kiu ca nó.
lTach lưuý đến các yếu tvt lý ca tptin như độ ln, ...
5
Mt skhái nim vtptin (file)(3)
lBiến tptin
lĐược ng để đại din cho mt tptin
lCác thao tác lên tptins được thc hin thôngquabiến này
lCon trtptin
lTi mi thi đim,scómt vtríca tptinmàti đóvic
đọc/ghi thôngtinsxy ra
lTahìnhdungcó1 contr đang ch đến vtrí đó
lSau khi đọc/ghi xong dliu, contrschuyn dch thêm mt
phn tvphía cui tptin.
lSau phn tdliu cui cùng ca tptinlàdu kết thúc tptin
EOF
6
Các thao tác trên tptin
lKhai báo biến tptin
lMtptin
lĐóng tptin
lKim tra đến cui tptin hay chưa?
lDi chuyncontrtptinv đu tptin -Hàm
rewind()
7
Khai báo biến tptin
lCúpháp:
FILE <Danh sách các biếncontr>;
lCác biến trong danh sách phi làcáccontrvà
được phân cách bi du phy(,).
lVíd:
FILE *f1,*f2;
8
Mtptin (1)
lCúpháp:
FILE *fopen(char *Path, const char *Mode)
lÝnghĩa:
lTrvcontrtptinca tptin đưc m
lTrvNULL nếu cóli
9
Mtptin (2)
lPath:chui ch đường dn đến tptin trên đĩa
lType:chui xác định cách thc màtptinsm.Các giátr
cóthcaMode:
10
Mtptin (3)
lVíd:Mmt tptintênTEST.txt đ ghi.
FILE *f;
f =fopen(TEST.txt”, w);
if (f!=NULL){
//Các u lnh đthao tác vi tptin
// Đóng tptin
}
=>mtptin để ghi
=>nếu tptin đã tn ti ri thìtptinsbxóa vàmt
tptinmi được to ra
11
Đóng tptin
lCúpháp:int fclose(FILE *f)
lGhi dliu còn li trong ng đệm vào tptinvà đóng li tptin
lflàcontrtptin được mbi hàm fopen()
lGiátrtrvlà0báo rng vic đóng tptinthành công
lGiátrtrv EOF nếu cóxut hin li
lCúpháp:int fcloseall()
lĐóng tt ccác tptinli
lTrvtng scác tptin đưc đóng li
lNếu không thành công,kết qutrvlàEOF
12
Kim tra đến cui tptin hay
chưa?
lCúpháp:
int feof(FILE *f)
lÝnghĩa:
lKim tra xem đã chm ti cui tptin hay chưa.
lTrvEOFnếu cui tptin đưc chm ti, ngược li
trv0.
13
Di chuyncontrtptinv đu
tptin -Hàmrewind()
lCúpháp:
void rewind(FILE *f)
lÝnghĩa:
lLàm chocontrquayv đu tptin như khi m
14
Truy cp tptin văn bn
lGhi dliu lên tptin văn bn
lĐọc dliu ttp tin văn bn
15
Ghi dliu lên tptin văn bn(1)
lHàm putc()
int putc(intc, FILE *f)
lĐược dùng để ghi mt ký tlên mt tptin văn bn
đang được m(liên kết vicontrf) để làm vic
lccha mã Ascii ca ký t
lHàm này trvEOF nếu gp li
16
Ghi dliu lên tptin văn bn(2)
lHàm fputs()
int fputs(const char *buffer, FILE *f)
lĐược dùng để ghi mt chui tcha trong ng
đệm lên tptin văn bn
lHàm này trvgiátr0nếubuffer cha chui rng
trvEOF nếu gp li
17
Ghi dliu lên tptin văn bn(3)
lVíd:Viết chương trình ghi chui ký tlên tptin văn bn
D:\\Baihat.txt
18
Ghi dliu lên tptin văn bn(3)
lHàm fprintf()
fprintf(FILE *f, const char *format,varexpr)
lĐược dùng để ghi dliu có định dng lên tptin văn bn.
lformat:chui định dng(ging vi các định dng ca hàm
printf())
lvarexpr:danh sách các biu thc,mi biu thc cách nhau
du phy(,)
19
Đọc dliu ttp tin văn bn(1)
lHàm getc()
int getc(FILE *f)
lĐược dùng để đc dliu ttp tin văn bn đang được m
để làm vic (liên kết vi f)
lHàm này trvmã Ascii ca mt ký t được đọc(kc
EOF)
20
Đọc dliu ttp tin văn bn(2)
lHàm fgets()
char *fgets(char *buffer, int n, FILE *f)
lĐược ng để đc1chui ký tttptin văn bn đang được m
(liên kết vicontrf)
lĐọc cho đến khi đủ n thoc gp txung dòng\n( t
này cũng được đưa vào chui kết qu) haygp tkết thúc
EOF ( tnày không được đưa vào chui kết qu)
lbuffer:ch đến cùng nh đủ ln cha các tnhn được
lKý tNULL (‘\0)t đng được thêm vào cui chui kết qu lưu
trong vùng đệm
lHàm trv đa ch đu tiên ca vùng đệm khi không gp li và
chưa gp ký tkết thúcEOF. Ngược li,hàm trvgiátrNULL