Bài giảng Lập trình với tập tin - Nguyễn Đông Hà

pdf 37 trang ngocly 2740
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình với tập tin - Nguyễn Đông Hà", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_lap_trinh_voi_tap_tin_nguyen_dong_ha.pdf

Nội dung text: Bài giảng Lập trình với tập tin - Nguyễn Đông Hà

  1. LLậậpp trtrììnhnh vvớớii ttậậpp tintin NguyNguyễễnn ĐĐôngông HHàà KhoaKhoa CNTTCNTT –– ĐĐHH KHTNKHTN Sưu tầm b ởi: www.daihoc.com.vn
  2. LLậậpp trtrììnhnh vvớớii ttậậpp tintin „ DDữữ liliệệuu ccủủaa chchươươngng trtrììnhnh đưđượợcc llưưuu trtrữữ trongtrong bbộộ nhnhớớ chchíínhnh (c(cáácc bibiếếnn bbộộ nhnhớớ),), khôngkhông đưđượợcc llưưuu trtrữữ chocho llầầnn chchạạyy kkếế titiếếpp ccủủaa chchươươngng trtrììnhnh „ MMụụcc đđííchch chchíínhnh ccủủaa viviệệcc llậậpp trtrììnhnh vvớớii ttậậpp tintin llàà nhnhằằmm đđểể llưưuu trtrữữ ddữữ liliệệuu vvààoo bbộộ nhnhớớ phphụụ vvàà truytruy xuxuấấtt trtrởở llạạii khikhi ccầầnn thithiếếtt Sưu tầm b ởi: www.daihoc.com.vn
  3. PhânPhân loloạạii ttậậpp tintin „ TTậậpp tintin vvăănn bbảảnn „ ccóó ththểể xemxem nnộộii dungdung bbằằngng llệệnhnh typetype ccủủaa hhệệ đđiiềềuu hhàànhnh DOSDOS „ đưđượợcc sosoạạnn ththảảoo bbằằngng ccáácc chchươươngng trtrììnhnh sosoạạnn ththảảoo vvăănn bbảảnn đơđơnn gigiảảnn nhnhưư NotepadNotepad ccủủaa Windows Windows „ TTậậpp tintin nhnhịị phânphân „ khôngkhông ccóó ddạạngng vvăănn bbảảnn ASCIIASCII „ vvíí ddụụ:: ttậậpp tintin mãmã ththựựcc thithi trêntrên hhệệ đđiiềềuu hhàànhnh (.exe,.com),(.exe,.com), ttậậpp tintin vvăănn bbảảnn phphứứcc hhợợpp (.doc),(.doc), ttậậpp tintin hhììnhnh ảảnhnh (.jpg)(.jpg) Sưu tầm b ởi: www.daihoc.com.vn
  4. KKỹỹ thuthuậậtt llậậpp trtrììnhnh ttậậpp tintin „„ CCáácc thaothao ttáácc vvớớii ttậậpp tintin luônluôn ggồồmm 33 bbưướớcc chchíínhnh sausau đđâyây:: „ MMởở ttậậpp tintin đđểể chuchuẩẩnn bbịị llààmm viviệệcc „ ĐĐọọcc vvàà ghighi ddữữ liliệệuu „ ĐĐóóngng ttậậpp tintin Sưu tầm b ởi: www.daihoc.com.vn
  5. MMởở ttậậpp tintin „ DDùùngng hhààmm fopenfopen đđểể mmởở ttậậpp tintin theotheo ccúú phpháápp sau:sau: FILE *fopen(const char *ten_tap_tin, const char *tuy_chon); „ VVíí ddụụ:: /* Mo tap tin ten la text.txt de ghi */ fopen( “text.txt” , ”wt” ); Sưu tầm b ởi: www.daihoc.com.vn
  6. MMởở ttậậpp tintin „ CCáácc ttùùyy chchọọnn ccóó ththểể ccóó:: rr mmởở filefile đđểể đđọọc,c, nnếếuu filefile koko ttồồnn ttạại,i, fopenfopen trtrảả vvềề NULLNULL ww mmởở filefile đđểể ghi,ghi, nnếếuu filefile koko ttồồnn ttạại,i, ttạạoo filefile mmớới,i, nnếếuu đđãã ttồồnn ttạại,i, ghighi đđèè lênlên filefile ccũũ koko ccầầnn hhỏỏii aa mmởở filefile đđểể thêmthêm vvààoo phphííaa sausau filefile đđãã ttồồnn ttạạii r+r+ mmởở filefile đđểể đđọọcc viviếết,t, ghighi đđèè lênlên phphầầnn ddữữ liliệệuu đđãã ccóó w+w+ mmởở filefile đđểể đđọọcc viviếết,t, xxóóaa hohoàànn totoàànn phphầầnn ddữữ liliệệuu ccũũ a+a+ mmởở filefile đđểể đđọọcc vvàà thêmthêm vvààoo phphííaa sausau filefile ccũũ Sưu tầm b ởi: www.daihoc.com.vn
  7. MMởở ttậậpp tintin „ MMặặcc đđịịnhnh mmởở ttậậpp tintin llàà ttậậpp tintin vvăănn bbảản,n, đđểể mmởở ttậậpp tintin nhnhịị phân,phân, phphầầnn ttùùyy chchọọnn phphảảii thêmthêm vvààoo kýký ttựự ““bb””,, ttứứcc llàà ““wbwb””,, ““rbrb”” (b:(b: binary)binary) „ CCóó ththểể thêmthêm kýký ttựự ““tt”” vvààoo phphầầnn ttùùyy chchọọnn chocho ttậậpp tintin vvăănn bbảản,n, mmặặcc ddùù khôngkhông ghighi ccũũngng đưđượợc.c. (t:(t: text)text) Sưu tầm b ởi: www.daihoc.com.vn
  8. MMởở ttậậpp tintin „ HHààmm fopen()fopen() trtrảả vvềề NULLNULL nnếếuu xxảảyy rara llỗỗi:i: „ SSửử ddụụngng têntên ttậậpp tintin khôngkhông đđúúngng quyquy ttắắcc „ MMởở ttậậpp tintin chchưưaa ssẵẵnn ssààngng ((đđĩĩaa chchưưaa formatformat,, cchhưưaa đđóóngng ổổ đđĩĩa)a) „ MMởở ttậậpp tintin khôngkhông ttồồnn ttạạii „ BBấấtt ccứứ khikhi nnààoo ssửử ddụụngng hhààmm fopenfopen,, luônluôn phphảảii kikiểểmm tratra kkếếtt ququảả trtrảả vvềề xemxem ccóó ththựựcc hihiệệnn ththàànhnh côngcông hayhay khôngkhông Sưu tầm b ởi: www.daihoc.com.vn
  9. CCáácc hhààmm đđọọc,c, ghighi „ ĐĐọọcc ccáácc gigiáá trtrịị ssốố (s(sốố nguyên,nguyên, ththựực,c, 11 kýký ttựự ) ) int fscanf(FILE *tap_tin, const char * format [ , argument , ] ); „ VVíí ddụụ /* doc mot so nguyen dua vao bien n tu tap tin duoc dai dien boi con tro ten la fp */ fscanf(fp ,”%d” , &n); Sưu tầm b ởi: www.daihoc.com.vn
  10. CCáácc hhààmm đđọọc,c, ghighi „ ĐĐọọcc ccáácc gigiáá trtrịị chuchuỗỗii kýký ttựự char * fgets (char * chuoi, int sokytu , FILE * tap_tin); „ VVíí ddụụ /* Doc mot chuoi ky tu chua toi da 20 ky tu tu tap tin duoc dai dien boi con tro fp, dua vao bien chuoi ky tu ten la dong */ fgets(dong,20,fp); Sưu tầm b ởi: www.daihoc.com.vn
  11. CCáácc hhààmm đđọọc,c, ghighi „ GhiGhi int fprintf (FILE * tap_tin, const char * ma[ , bien , ] ); „ VVíí ddụụ /* ghi mot so nguyen n ten tap tin duoc dai dien boi con tro ten la fp */ fprintf(fp,"%d",n); Sưu tầm b ởi: www.daihoc.com.vn
  12. TTạạoo ttậậpp tintin vvăănn bbảảnn mmớớii „ GGồồmm 33 bbưướớc:c: „ MMởở ttậậpp tintin bbằằngng hhààmm fopen()fopen() vvớớii ttùùyy chchọọnn ““wtwt”” „ GhiGhi ddữữ liliệệuu lênlên ttậậpp tintin bbằằngng hhààmm fprintf()fprintf() „ ĐĐóóngng ttậậpp tintin bbằằngng hhààmm fclose()fclose() Sưu tầm b ởi: www.daihoc.com.vn
  13. TTạạoo ttậậpp tintin vvăănn bbảảnn mmớớii –– vvíí ddụụ void TaoTapTin() { FILE* fp; int x = 10; fp = fopen(“test.txt”,”wt”); if(fp != NULL) { fprintf(fp, “Chao cac ban !\n”); fprintf(fp,"x = %d", x); fclose(fp); } else printf(“Khong the tao tap tin”); } Sưu tầm b ởi: www.daihoc.com.vn
  14. ĐĐọọcc ddữữ liliệệuu ttừừ ttậậpp tintin vvăănn bbảảnn ccóó ssẵẵnn „ GGồồmm 33 bbưướớc:c: „ MMởở ttậậpp tintin bbằằngng hhààmm fopen()fopen() vvớớii ttùùyy chchọọnn ““rtrt”” „ GGọọii hhààmm fscanf()fscanf() hayhay fgets()fgets() đđểể đđọọcc ddữữ liliệệuu ttừừ ttậậpp tintin vvààoo bibiếếnn bbộộ nhnhớớ „ ĐĐóóngng ttậậpp tintin bbằằngng hhààmm fclose()fclose() „ DDùùngng hhààmm fscanffscanf đđểể đđọọcc ssốố nguyên,nguyên, ssốố ththựựcc hayhay kýký ttựự;; ddùùngng hhààmm fgetsfgets đđểể đđọọcc nguyênnguyên mmộộtt dòngdòng ccủủaa ttậậpp tintin „ ĐĐểể kikiểểmm tratra đđãã đđếếnn cucuốốii ttậậpp tintin hayhay chchưưaa,, ddùùngng hhààmm feoffeof Sưu tầm b ởi: www.daihoc.com.vn
  15. ĐĐọọcc ddữữ liliệệuu ttừừ ttậậpp tintin vvăănn bbảảnn –– vvíí ddụụ Sưu tầm b ởi: www.daihoc.com.vn
  16. #define MAXCHAR 255 void DocTapTin() { FILE* fp; char dong[MAXCHAR+1]; fp = fopen(“test.txt”,”rt”); if(fp != NULL) { while(!feof(fp)) /* chua cuoi tt*/ { if(fgets(dong,MAXCHAR,fp)!=NULL) printf(“%s”,dong); } fclose(fp); } else printf(“Khong the mo tap tin”); } Sưu tầm b ởi: www.daihoc.com.vn
  17. #define MAXCHAR 255 void DocTapTin() { FILE* fp; char dong[MAXCHAR+1]; fp = fopen(“test.txt”,”rt”); if(fp != NULL) { while(!feof(fp)) /* chua cuoi tt*/ { if(fgets(dong,MAXCHAR,fp)!=NULL) printf(“%s”,dong); } fclose(fp); } else printf(“Khong the mo tap tin”); } Sưu tầm b ởi: www.daihoc.com.vn
  18. ThêmThêm ddữữ liliệệ uu vvààoo cucuốốii ttậậpp tintin vvăănn bbảảnn ccóó ssẵẵnn „ GGồồmm 33 bbưướớc:c: „ MMởở ttậậpp tintin bbằằngng hhààmm fopen()fopen() vvớớii ttùùyy chchọọnn ““atat”” „ GhiGhi ddữữ liliệệuu thêmthêm vvààoo cucuốốii ttậậpp tintin bbằằngng hhààmm fprintf()fprintf() „ ĐĐóóngng ttậậpp tintin bbằằngng hhààmm fclose()fclose() Sưu tầm b ởi: www.daihoc.com.vn
  19. VVíí ddụụ ghghéépp 22 ttậậpp tintin /* Copy du lieu tu tap tin 2 vao phia sau tap tin 1, tra ve 1 neu thanh cong, tra ve 0 neu that bai */ int GhepHaiTapTin(char *tap_tin_1, char *tap_tin_2) { FILE *fp1,*fp2; char dong[MAXCHAR +1]; fp1 = fopen(tap_tin_1,"at"); fp2 = fopen(tap_tin_2,"rt"); if(fp1==NULL || fp2==NULL) { printf("Loi mo tap tin\n"); return 0; } Sưu tầm b ởi: www.daihoc.com.vn
  20. VVíí ddụụ ghghéépp 22 ttậậpp tintin fprintf(fp1,"\n"); while(!(feof(fp2))) { if(fgets(dong, MAXCHAR, fp2) !=NULL) fprintf(fp1,dong); } fclose(fp1); fclose(fp2); return 1; } Sưu tầm b ởi: www.daihoc.com.vn
  21. XXửử lýlý ttậậpp tintin nhnhịị phânphân „ GGồồmm 33 bbưướớc:c: „ GGọọii hhààmm fopen()fopen() vvớớii ttùùyy chchọọnn ccóó phphốốii hhợợpp vvớớii ““bb”” „ GGọọii hhààmm fread()fread() hayhay fwrite()fwrite() đđểể đđọọcc ddữữ liliệệuu ttừừ ttậậpp tintin vvààoo bibiếếnn bbộộ nhnhớớ (l(làà bibiếếnn kikiểểuu mmẫẫuu tin)tin) hayhay ghighi ddữữ liliệệuu ttừừ bibiếếnn bbộộ nhnhớớ vvààoo ttậậpp tintin „ ĐĐóóngng ttậậpp tintin bbằằngng hhààmm fclose()fclose() Sưu tầm b ởi: www.daihoc.com.vn
  22. CCáácc hhààmm đđọọc,c, ghighi ttậậpp tintin nhnhịị phânphân „ ĐĐọọcc int fread (void * vungnho, size_t sobytedoc, size_t solandoc, FILE * tap_tin); „ VVíí ddụụ /* Doc vung du lieu tren tap tin dai dien boi con tro fp, co kich thuoc bang (sizeof) kich thuoc cua 1 mau tin HOCSINH dua vao bien mau tin hs */ fread(&hs,sizeof(HOCSINH),1,fp); Sưu tầm b ởi: www.daihoc.com.vn
  23. CCáácc hhààmm đđọọc,c, ghighi ttậậpp tintin nhnhịị phânphân „ GhiGhi size_t fwrite ( const void * vungnho, size_t sobyteghi, size_t solanghi, FILE * tap_tin ); „ VVíí ddụụ /* Ghi mau tin hs len tap tin dai dien boi con tro fp, co kich thuoc bang (sizeof) kich thuoc cua 1 mau tin HOCSINH*/ fwrite(&hs,sizeof(HOCSINH),1,fp); Sưu tầm b ởi: www.daihoc.com.vn
  24. XXửử lýlý ttậậpp tintin ggồồmm ccáácc mmẫẫuu tintin „ MMởở ttậậpp tintin bbằằngng hhààmm fopenfopen vvớớii ttùùyy chchọọnn ““r+br+b”” đđểể đđọọcc vvàà ghighi „ ĐĐóóngng ttậậpp tintin bbằằngng hhààmm fclosefclose „ CCóó ththểể ddùùngng hhààmm fseekfseek đđểể đưđưaa bbộộ đđịịnhnh vvịị đđọọcc ghighi đđếếnn mmẫẫuu tintin ththííchch hhợợpp „ DDùùngng hhààmm ftellftell đđểể ghighi nhnhậậnn llạạii vvịị trtríí ccủủaa mmẫẫuu tintin mmàà sausau nnààyy ssẽẽ đưđượợcc ccậậpp nhnhậậtt ddữữ liliệệuu „ VVẫẫnn đđọọcc vvàà ghighi bbằằngng hhààmm freadfread vvàà fwritefwrite Sưu tầm b ởi: www.daihoc.com.vn
  25. TTạạoo mmộộtt ttậậpp tintin ggồồmm ccáácc mmẫẫuu tintin „ GGồồmm 33 bbưướớc:c: „ TTạạoo ttậậpp tintin bbằằngng hhààmm fopen()fopen() vvớớii ttùùyy chchọọnn ““wbwb”” „ GGọọii hhààmm fwrite()fwrite() ghighi ddữữ liliệệuu ttừừ bibiếếnn bbộộ nhnhớớ (l(làà bibiếếnn kikiểểuu mmẫẫuu tin)tin) vvààoo ttậậpp tintin „ ĐĐóóngng ttậậpp tintin bbằằngng hhààmm fclose()fclose() Sưu tầm b ởi: www.daihoc.com.vn
  26. TTạạoo mmộộtt ttậậpp tintin ggồồmm ccáácc mmẫẫuu tintin int TaoDanhSachHS(char *ten_tap_tin) { HOCSINH dshs[3] = { {"993236","Lam Vinh Khang",0,0,0}, {"993237","To My Hien",0,0,0}, {"993238","Van Si Ha",0,0,0} }; FILE *fp; fp = fopen(ten_tap_tin,"wb"); Sưu tầm b ởi: www.daihoc.com.vn
  27. TTạạoo mmộộtt ttậậpp tintin ggồồmm ccáácc mmẫẫuu tintin if(fp!=NULL) { fwrite(dshs,sizeof(HOCSINH),3,fp); fclose(fp); return 1; } else { printf("Khong the tao tap tin!\n"); return 0; } } Sưu tầm b ởi: www.daihoc.com.vn
  28. ThêmThêm mmẫẫuu tintin vvààoo ttậậpp tintin ccóó ssẵẵnn „ GGồồmm 33 bbưướớc:c: „ GGọọii hhààmm fopen()fopen() vvớớii ttùùyy chchọọnn ““abab”” „ GGọọii hhààmm fwrite()fwrite() ghighi ddữữ liliệệuu ttừừ bibiếếnn bbộộ nhnhớớ (l(làà bibiếếnn kikiểểuu mmẫẫuu tin)tin) vvààoo ttậậpp tintin „ ĐĐóóngng ttậậpp tintin bbằằngng hhààmm fclose()fclose() Sưu tầm b ởi: www.daihoc.com.vn
  29. ĐĐọọcc danhdanh ssááchch mmẫẫuu tintin ttừừ ttậậpp tintin „ GGồồmm 33 bbưướớc:c: „ GGọọii hhààmm fopen()fopen() vvớớii ttùùyy chchọọnn ““rbrb”” „ GGọọii hhààmm fread()fread() đđểể đđọọcc ddữữ liliệệuu ttừừ ttậậpp tintin vvààoo bibiếếnn bbộộ nhnhớớ (l(làà bibiếếnn kikiểểuu mmẫẫuu tin)tin) „ ĐĐóóngng ttậậpp tintin bbằằngng hhààmm fclose()fclose() Sưu tầm b ởi: www.daihoc.com.vn
  30. ĐĐọọcc danhdanh ssááchch mmẫẫuu tintin ttừừ ttậậpp tintin int DocDanhSachHS(char *ten_tap_tin) { FILE *fp; HOCSINH hs; int stt = 0; fp = fopen(ten_tap_tin,"rb"); if(fp!=NULL) { /* Doc tap tin */ Sưu tầm b ởi: www.daihoc.com.vn
  31. ĐĐọọcc danhdanh ssááchch mmẫẫuu tintin ttừừ ttậậpp tintin while(!feof(fp)) { stt++; if(fread(&hs, sizeof(HOCSINH),1,fp)==1) printf("%5d %6s %20s %f %f %f\n", stt, hs.maso, hs.hoten, hs.diem1, hs.diem2,hs.diem3); } fclose(fp); return 1; } else { printf("Khong the mo tap tin!\n"); return 0; } } Sưu tầm b ởi: www.daihoc.com.vn
  32. CCáácc hhààmm ququảảnn lýlý ttậậpp tintin „ XXóóaa ttậậpp tintin intint removeremove (( constconst charchar *ten_tap_tin);*ten_tap_tin); „ VVíí ddụụ char ten_tap_tin[80]; printf(“Nhap ten tap tin muon xoa: "); gets(ten_tap_tin); if(remove(ten_tap_tin) == 0) printf(“Da xoa tap tin”); else printf( “Loi xoa tap tin”); Sưu tầm b ởi: www.daihoc.com.vn
  33. CCáácc hhààmm ququảảnn lýlý ttậậpp tintin „ ĐĐổổii têntên ttậậpp tintin int rename( const char *ten_cu, const char *ten_moi ); „ VVíí ddụụ char ten_cu[80], ten_moi[80]; printf(“Nhap ten hien tai: "); gets(ten_cu); printf(“Nhap ten moi: "); gets(ten_moi); if (rename( ten_cu, ten_moi) == 0 ) printf(“Da doi ten tap tin”); else printf(“Loi doi ten tap tin”); Sưu tầm b ởi: www.daihoc.com.vn
  34. CCáácc hhààmm ququảảnn lýlý ttậậpp tintin „ SaoSao chchéépp ttậậpp tintin „ KhôngKhông ccóó hhààmm ssẵẵnn trongtrong ththưư viviệện.n. PhPhảảii ttựự viviếếtt bbằằngng ccááchch đđọọcc vvàà ghighi ddữữ liliệệuu ddạạngng nhnhịị phân.phân. „ ThamTham khkhảảoo hhààmm CopyFileCopyFile trongtrong ssááchch trangtrang 75.75. Sưu tầm b ởi: www.daihoc.com.vn
  35. KKỹỹ thuthuậậtt llậậpp trtrììnhnh ttậậpp tintin TênTên hhààmm ChChứứcc nnăăngng LoLoạạii ttậậpp tintin fopenfopen mmởở ttậậpp tintin (t(tậậpp tintin mmớớii vvăănn bbảản,n, nhnhịị phânphân hohoặặcc đđãã ccóó ssẵẵn)n) fprintffprintf ghighi ddữữ liliệệuu vvààoo ttậậpp tintin vvăănn bbảảnn fscanffscanf đđọọcc ddữữ liliệệuu ttừừ ttậậpp tintin vvăănn bbảảnn vvààoo bibiếếnn ssốố nguyên,nguyên, ththựực,c, kýký ttựự fgetsfgets đđọọcc ddữữ liliệệuu dòngdòng kýký ttựự vvăănn bbảảnn ttừừ ttậậpp tintin vvààoo bibiếếnn chuchuỗỗii kýký ttựự Sưu tầm b ởi: www.daihoc.com.vn
  36. KKỹỹ thuthuậậtt llậậpp trtrììnhnh ttậậpp tintin TênTên hhààmm ChChứứcc nnăăngng LoLoạạii ttậậpp tintin freadfread đđọọcc ddữữ liliệệuu ttừừ ttậậpp tintin nhnhịị phânphân vvààoo bibiếếnn fwritefwrite ghighi ddữữ liliệệuu vvààoo ttậậpp tintin nhnhịị phânphân fclosefclose đđóóngng ttậậpp tintin sausau khikhi vvăănn bbảản,n, nhnhịị thaothao ttáácc phânphân feoffeof kikiểểmm tratra đđãã đđếếnn cucuốốii ttậậpp vvăănn bbảản,n, nhnhịị tintin hayhay chchưưaa phânphân ftellftell llấấyy vvịị trtríí hihiệệnn ttạạii vvăănn bbảản,n, nhnhịị phânphân Sưu tầm b ởi: www.daihoc.com.vn
  37. Sưu tầm b ởi: www.daihoc.com.vn