Professional Documents
Culture Documents
Phan 2 Chuong 10
Phan 2 Chuong 10
Lp trnh cn bn
Sau khi c/ghi xong d liu, con tr s chuyn dch thm mt phn t v pha cui tp tin. Sau phn t d liu cui cng ca tp tin l du kt thc tp tin EOF (End Of File).
II.2. M tp tin
C php: FILE *fopen(char *Path, const char *Mode) Trong : - Path: chui ch ng dn n tp tin trn a. - Type: chui xc nh cch thc m tp tin s m. Cc gi tr c th ca Mode: Ch r w a rb wb ab r+ w+ a+ r+b w+b a+b ngha M tp tin vn bn c To ra tp tin vn bn mi ghi Ni vo tp tin vn bn M tp tin nh phn c To ra tp tin nh phn ghi Ni vo tp tin nh phn M mt tp tin vn bn c/ghi To ra tp tin vn bn c ghi Ni vo hay to mi tp tin vn bn c/ghi M ra tp tin nh phn c/ghi To ra tp tin nh phn c/ghi Ni vo hay to mi tp tin nh phn
- Hm fopen tr v mt con tr tp tin. Chng trnh ca ta khng th thay i gi tr ca con tr ny. Nu c mt li xut hin trong khi m tp tin th hm ny tr v con tr NULL. V d: M mt tp tin tn TEST.txt ghi.
FILE *f; f = fopen(TEST.txt, w); if (f!=NULL) { /* Cc cu lnh thao tc vi tp tin*/
Trang 106
Lp trnh cn bn
/* ng tp tin*/ }
Trong v d trn, ta c s dng cu lnh kim tra iu kin xc nh m tp tin c thnh cng hay khng?. Nu m tp tin ghi, nu tp tin tn ti ri th tp tin s b xa v mt tp tin mi c to ra. Nu ta mun ghi ni d liu, ta phi s dng ch a. Khi m vi ch c, tp tin phi tn ti ri, nu khng mt li s xut hin.
II.3. ng tp tin
Hm fclose() c dng ng tp tin c m bi hm fopen(). Hm ny s ghi d liu cn li trong vng m vo tp tin v ng li tp tin. C php: int fclose(FILE *f) Trong f l con tr tp tin c m bi hm fopen(). Gi tr tr v ca hm l 0 bo rng vic ng tp tin thnh cng. Hm tr v EOF nu c xut hin li. Ngoi ra, ta cn c th s dng hm fcloseall() ng tt c cc tp tin li. C php: int fcloseall() Kt qu tr v ca hm l tng s cc tp tin c ng li. Nu khng thnh cng, kt qu tr v l EOF.
Lp trnh cn bn
Trong , buffer l con tr c kiu char ch n v tr u tin ca chui k t c ghi vo. Hm ny tr v gi tr 0 nu buffer cha chui rng v tr v EOF nu gp li. III.1.3 Hm fprintf() Hm ny dng ghi d liu c nh dng ln tp tin vn bn. C php: fprintf(FILE *f, const char *format, varexpr) Trong : format: chui nh dng (ging vi cc nh dng ca hm printf()), varexpr: danh sch cc biu thc, mi biu thc cch nhau du phy (,).
ngha
Ghi s nguyn Ghi s thc c <s ch s thp phn> theo quy tc lm trn s. %o Ghi s nguyn h bt phn %x Ghi s nguyn h thp lc phn %c Ghi mt k t %s Ghi chui k t %e hoc %E hoc %g Ghi s thc dng khoa hc (nhn 10 m x) hoc %G V d: Vit chng trnh ghi chui k t ln tp tin vn bn D:\\Baihat.txt
#include<stdio.h> #include<conio.h> int main() { FILE *f; clrscr(); f=fopen("D:\\Baihat.txt","r+"); if (f!=NULL) { fputs("Em oi Ha Noi pho.\n",f); fputs("Ta con em, mui hoang lan; ta con em, mui hoa sua.",f); fclose(f); } getch(); } return 0;
Trang 108
Lp trnh cn bn
Trang 109
Lp trnh cn bn
fcloseall(); } getch(); return 0; }
Trong : - ptr: con tr ch n vng nh s nhn d liu t tp tin. - n: s phn t c c t tp tin. - size: kch thc ca mi phn t. - f: con tr tp tin c m. - Gi tr tr v ca hm ny l s phn t c c t tp tin. Gi tr ny bng n hay nh hn n nu chm n cui tp tin hoc c li xut hin..
Lp trnh cn bn
V tr hin ti ca con tr tp tin 1 SEEK_CUR V tr cui tp tin 2 SEEK_END Kt qu tr v ca hm l 0 nu vic di chuyn thnh cng. Nu khng thnh cng, 1 gi tr khc 0 ( l 1 m li) c tr v.
IV.4 V d
V d 1: Vit chng trnh ghi ln tp tin CacSo.Dat 3 gi tr s (thc, nguyn, nguyn di). Sau c cc s t tp tin va ghi v hin th ln mn hnh.
#include<stdio.h> #include<conio.h> int main() { FILE *f; clrscr(); f=fopen("D:\\CacSo.txt","wb"); if (f!=NULL) { double d=3.14; int i=101; long l=54321; fwrite(&d,sizeof(double),1,f); fwrite(&i,sizeof(int),1,f); fwrite(&l,sizeof(long),1,f); /* Doc tu tap tin*/ rewind(f); fread(&d,sizeof(double),1,f); fread(&i,sizeof(int),1,f); fread(&l,sizeof(long),1,f); printf("Cac ket qua la: %f %d fclose(f); } getch(); return 0; }
%ld",d,i,l);
V d 2: Mi sinh vin cn qun l t nht 2 thng tin: m sinh vin v h tn. Vit chng trnh cho php la chn cc chc nng: nhp danh sch sinh vin t bn phm ri ghi ln tp tin SinhVien.dat, c d liu t tp tin SinhVien.dat ri hin th danh sch ln mn hnh, tm kim h tn ca mt sinh vin no da vo m sinh vin nhp t bn phm. Ta nhn thy rng mi phn t ca tp tin SinhVien.Dat l mt cu trc c 2 trng: m v h tn. Do , ta cn khai bo cu trc ny v s dng cc hm c/ghi tp tin nh phn vi kch thc mi phn t ca tp tin l chnh kch thc cu trc .
#include<stdio.h> #include<conio.h> #include<string.h> typedef struct { char Ma[10]; char HoTen[40];
Trang 111
Lp trnh cn bn
} SinhVien; void WriteFile(char *FileName) { FILE *f; int n,i; SinhVien sv; f=fopen(FileName,"ab"); printf("Nhap bao nhieu sinh vien? ");scanf("%d",&n); fflush(stdin); for(i=1;i<=n;i++) { printf("Sinh vien thu %i\n",i); printf(" - MSSV: ");gets(sv.Ma); printf(" - Ho ten: ");gets(sv.HoTen); fwrite(&sv,sizeof(sv),1,f); fflush(stdin); } fclose(f); printf("Bam phim bat ky de tiep tuc"); getch(); } void ReadFile(char *FileName) { FILE *f; SinhVien sv; f=fopen(FileName,"rb"); printf(" MSSV | Ho va ten\n"); fread(&sv,sizeof(sv),1,f); while (!feof(f)) { printf(" %s | %s\n",sv.Ma,sv.HoTen); fread(&sv,sizeof(sv),1,f); } fclose(f); printf("Bam phim bat ky de tiep tuc!!!"); getch(); } void Search(char *FileName) { char MSSV[10]; FILE *f; int Found=0; SinhVien sv; fflush(stdin); printf("Ma so sinh vien can tim: ");gets(MSSV); f=fopen(FileName,"rb"); while (!feof(f) && Found==0) { fread(&sv,sizeof(sv),1,f); if (strcmp(sv.Ma,MSSV)==0) Found=1; } fclose(f); if (Found == 1) printf("Tim thay SV co ma %s. Ho ten la: %s",sv.Ma,sv.HoTen);
Trang 112
Lp trnh cn bn
else printf("Tim khong thay sinh vien co ma %s",MSSV); printf("\nBam phim bat ky de tiep tuc!!!"); getch();
int main() { int c; for (;;) { clrscr(); printf("1. Nhap DSSV\n"); printf("2. In DSSV\n"); printf("3. Tim kiem\n"); printf("4. Thoat\n"); printf("Ban chon 1, 2, 3, 4: "); scanf("%d",&c); if(c==1) WriteFile("d:\\SinhVien.Dat"); else if (c==2) ReadFile("d:\\SinhVien.Dat"); else if (c==3) Search("d:\\SinhVien.Dat"); else break; } return 0; }
Ngoi ra th vin stdio.h cn nh ngha mt s hm khc cho php thao tc vi tp tin, sinh vin c th tham kho trong phn tr gip.
V. BI TP
V.1 Mc ch yu cu
Nm vng cch s dng kiu d liu tp tin. Phn bit n vi tt c cc kiu d liu c cu trc hc. Lm quen v bit cch thao tc trn tp tin. Vn dng cc kin thc hc vit cc chng trnh trong phn ni dung.
V.2 Ni dung
1. Vit chng trnh qun l mt tp tin vn bn theo cc yu cu: a- Nhp t bn phm ni dung mt vn bn sau ghi vo a. b- c t a ni dung vn bn va nhp v in ln mn hnh. c- c t a ni dung vn bn va nhp, in ni dung ln mn hnh v cho php ni thm thng tin vo cui tp tin . 2. Vit chng trnh cho php thng k s ln xut hin ca cc k t l ch (A..Z,a..z) trong mt tp tin vn bn. 3. Vit chng trnh m s t v s dng trong mt tp tin vn bn. 4. Vit chng trnh nhp t bn phm v ghi vo 1 tp tin tn l DMHH.DAT vi mi phn t ca tp tin l 1 cu trc bao gm cc trng: Ma (m hng: char[5]), Ten (Tn
Trang 113
Lp trnh cn bn
hng: char[20]).Kt thc vic nhp bng cch g ENTER vo Ma. Ta s dng tp tin ny gii m hng ha cho tp tin DSHH.DAT s cp trong bi 5. 5. Vit chng trnh cho php nhp t bn phm v ghi vo 1 tp tin tn DSHH.Dat vi mi phn t ca tp tin l mt cu trc bao gm cc trng : mh (m hng: char[5]), sl (s lng : int), dg ( n gi: float), st (S tin: float) theo yu cu: - Mi ln nhp mt cu trc - Trc tin nhp m hng (mh), a mh so snh vi Ma trong tp tin DMHH.DAT c to ra bi bi tp 1, nu mh=ma th in tn hng ngay bn cnh m hng. - Nhp s lng (sl). - Nhp n gi (dg). - Tnh s tin = s lng * n gi. Kt thc vic nhp bng cch nh ENTER vo m hng. Sau khi nhp xong yu cu in ton b danh sch hng ha c s gii m v tn hng theo mu sau:
| STT | MA HANG| TEN HANG | 1 | | 2 | a0101 b0101 |Duong cat trang |Sua co gai Ha Lan
Trang 114