Professional Documents
Culture Documents
Lec07 Files
Lec07 Files
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 .
11/04/2013
Files
Page 5
l mt chui cc k t
C:\\folder1\folder2\thanhpho.dat
11/04/2013
Files
Page 6
D liu lu tr l m ASCII ca k t , k s
11/04/2013
Files
Page 7
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
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
FILE *fp
11/04/2013
Files
Page 9
fopen
FILE *fopen(char *name, char *mode); fopen tr li con tr tr ti FILE
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
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); }
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;
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)
11/04/2013
Files
Page 17
11/04/2013
Files
Page 18
Di i n bytes t 1 v tr
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
11/04/2013
Files
Page 19
Xc nh chiu di mt file
long filelength(constant char* fname){
FILE *fp = fopen(fname, r); fseek(fp, 0, SEEK_END); long len= ftell(); flcose(fp); return len; }
lp v tr hin hnh t v tr lu
11/04/2013
Files
Page 20
Xa file
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