You are on page 1of 22

Tin Hc C S 4: Tp Tin

V Th Hng Nhn (vthnhan@vnu.edu.vn) Human Machine Interaction Lab. Vietnam National Univ., Hanoi

Ni dung
S dng tp tin (file) M, ng file Ghi, c file vi s nguyn, mng, chui Mt s hm x l file

11/04/2013

Files

Page 2

Dng (streams)
Trong nhiu ngn ng lp trnh, vo/ra (input/output) c thc hin trn dng d liu D liu tn ti trn dng, ta c th truy cp v s dng theo nhu cu V d

stdout: dng xut ra chun stderr: dng ra xut ra li chun stdin: dng nhp vo chun files network sockets (kt ni mng: network connections)

11/04/2013

Files

Page 3

File
D liu thng c lu trong cc file v y cng l ngun d liu cho chng trnh
D liu nhp vo Trc tip t bn phm File trn a Kho d liu trn mng Chng trnh (program) Xut d liu Mn hnh File lu trn a My in

11/04/2013

Files

Page 4

C bn v file
D liu biu din theo cch ca user (vd. S 12) c lu trong cc file

ASCII Symbol 64 65 66 67 68 69 70 . @ A B C D E F .

Di dng nh phn (1100)

Trng hp lu tr chun khng c m ha


K t: m ASCII Chui k t: chui m ASCII ca tng k t

S: chui m ASCII ca k t s hoc biu din nh phn ca s

c im truy xut data trong tp tin

Tun t tng byte

11/04/2013

Files

Page 5

C bn v file (tip (tip) )


H iu hnh xc nh 1 file bng ng dn

l mt chui cc k t

ng dn tuyt i (absolute path), v d,

C:\\folder1\folder2\thanhpho.dat

Nu file nm trong th mc hin hnh


Ch cn khai bo tn file l : thanhpho.dat Gi l ng dn tng i (relative path)

11/04/2013

Files

Page 6

Phn loi files


Tp tin vn bn (text file)

D liu lu tr l m ASCII ca k t , k s

Tp tin nh phn (binary file)

D liu lu tr l dng nh phn ca k t

11/04/2013

Files

Page 7

Phn loi files (tip (tip) )


Hai loi lu tr khc nhau nn vic truy xut d liu.

t file ra bin cn n cc hm th vin khc nhau

Binary file

Dng lu tr d liu di dng cu trc c kch thc c nh Khi ghi bin c cu trc ln file ghi mt khi c kch thc c nh V c t file ra bin cu trc, cng c t file theo khi c kch thc c nh

11/04/2013

Files

Page 8

Vo/ Vo /ra file


Trc khi c th c & Ghi c

Phi m file, dng hm th vin fopen fopen nhn mt tn ngoi nh data.txt, thc hin cc th tc vi h iu hnh v tr li mt con tr

Ta dng con tr ny c v ghi vo file Con tr tr ti mt structure FILE

FILE *fp

11/04/2013

Files

Page 9

fopen
FILE *fopen(char *name, char *mode); fopen tr li con tr tr ti FILE

FILE l tn kiu c nh ngha vi typedef

mode c th l

r: c (read) w: ghi (write) a: thm vo (append) C th thm b vo chui mode, cho php lm vic vi file nh phn

11/04/2013

Files

Page 10

fopen
Text file r, rt w, wt a Binary file rb wb a M t c Ghi, ghi nu file tn ti Thm (append) vo file, To mi nu cha tn ti r+, r+t w+, w+t a+, a+t r+b w+b a+b M va c va ghi M va c va ghi M va c va ghi cui file, To mi nu cha tn ti

Nu m file khng thnh cng, lnh tr v gi tr NULL


11/04/2013 Files Page 11

ng file: fclose
int fclose(FILE *fp);

0: c tr li nu thnh cng EOF (hng -1) nu tht bi Kim tra xem file c tn ti khng int FileExist (char *fname){ FILE* fp = fopen(fname, r); int result = (fp==NULL)? 0 : 1; if (fp) fclose(fp); return result; }

V d

11/04/2013

Files

Page 12

V d 1
Ghi v c s nguyn int main(){ FILE *fp; int i,in; printf(Nhp vo s n:"); scanf("%d", &in); //Ghi file if((fp = fopen("int_data.txt","wb"))= =NULL){ printf(Khng th m tn file.\n"); exit(0); }else for(i=1;i<=in;i++) fwrite(&i, sizeof(int), 1, fp); //Ghi file fclose(fp); //c file fp=fopen("int_data.txt", "rb"); while(fread(&i, sizeof(int),1, fp)==1) //c file printf("%d ",i); fclose(fp); }

fwrite, fwrite , fread


fwrite(&i, sizeof(int), 1, fp)

fread(&i, sizeof(int), 1, fp) =1 hoc 0


Ghi thng tin i vo tp tin Hm c 4 i s


c thng tin t tp tin lu vo i c thnh cng hm tr v 1, v 0 nu kt thc file

a ch ghi cu trc (&i) Kch thc ca cu trc (sizeof(int)) S cu trc s ghi (1) Con tr tr ti tp tin (fp)

size_t fread(void *array, size_t size, size_t count, FILE *fp); size_t fwrite(void *array, size_t size, size_t count, FILE *fp);

11/04/2013

Files

Page 14

V d 2:
#define MAX 30 int main(){ typedef struct{ int manv; char hoten[28]; }nhanvien;

ghi 1 danh sch nhn vin ra file


printf(Nhp vo s nhn vin: "); gets(ctemp); in= atoi(ctemp);

//M file ghi nhn vin vo file if((fp=fopen("struct.dat","wb"))==NULL){

FILE *fp; nhanvien nv[MAX]; char ctemp[10]; int i,in; } printf(khng m c file!\n"); exit(0);

11/04/2013

Files

Page 15

V d 2 (tip (tip) )
//Ghi nhn vin vo file for(i=0; i<in;i++){ printf(Nhp m nhn vin th%d:", i+1); gets(ctemp); nv[i].manv = atoi(ctemp); printf(Nhp tn nhn vin:"); gets(nv[i].hoten); fwrite(&nv[i],sizeof(nhanvien),1,fp); } fclose(fp);
11/04/2013 Files Page 16

V d 2 (tip (tip) )
//c t file v in nhn vin ra mn hnh fp = fopen("struct.dat","rb");
while( fread(&nv[i],sizeof(nhanvien),1,fp) =

=1)

printf("%5d %s\n,nv[i].manv, nv[i].hoten); } fclose(fp); }

11/04/2013

Files

Page 17

Kim tra ht file cha


int feof(FILE* f)

1: c tr li nu ht file ri! 0: nu ngc li

11/04/2013

Files

Page 18

Di chuyn trong file


V u file

void rewind(FILE *fp);

Di i n bytes t 1 v tr

fseek(FILE *fp, long n, long pos);


pos= SEEK_SET (hng 0): t u file pos = SEEK_CUR (hng 1): t v tr hin hnh pos = SEEK_END (hng 2): t cui file

n>0 di v cui file n<0 di li n=0 ng ti ch

11/04/2013

Files

Page 19

Thao tc vi v tr hin hnh


Ly v tr hin hnh trong file

long ftell(FILE *fp);

Xc nh chiu di mt file
long filelength(constant char* fname){

Ly v tr hin hnh ca v tr c ch ra (pos)

FILE *fp = fopen(fname, r); fseek(fp, 0, SEEK_END); long len= ftell(); flcose(fp); return len; }

int fgetpos(FILE *fp, fpos_t *pos)

lp v tr hin hnh t v tr lu

int fsetpos(FILE *fp, const fpos_t *pos);

11/04/2013

Files

Page 20

i tn file & xa mt file


i tn

rename(constant char *oldname, constant char *newname);

Xa file

remove(constant ch *filename); 0: c tr li nu thnh cng 1: nu ngc li

H iu hnh khng th i/ xa file ang m

11/04/2013

Files

Page 21

Kt lun
ngha ca vic s dng tp tin (file) M, ng file Ghi, c file s nguyn, mng, chui Mt s hm x l file

11/04/2013

Files

Page 22

You might also like