Xem mẫu

  1. tv n Các CTDL ã kh o sát có cùng 1 c Chương 6 tính ó là ư c lưu tr b nh trong (RAM), do ó d li u s m t khi k t thúc chương trình. T p tin (file) C n có m t cách t ch c lưu tr d li u lâu dài, ó là trên b nh ngoài (disk, tape, ...). Trên b nh ngoài d li u ư c t ch c thành các t p tin (file). tv n (tt) T p và con tr t p Vì t p là CTDL trên b nh ngoài (BNN) nên v i các thi t b khác nhau có cách t ch c lưu tr v t lý khác nhau. i u này gây tr ng i cho chương trình khi mu n truy xu t t p (vì nó c n ph i bi t nó ang làm vi c v i thi t b gì, theo cách như th nào ...). kh c ph c, C xây d ng i tư ng “dòng” (stream). Chương trình ch làm vi c v i các dòng, ph n còn l i M ng T p (tương tác gi a “dòng” v i file v t lý ư c x lý s n). V i cách làm như v y vi c truy xu t file tr nên c DISK l p v i các thi t b v t lý. RAM qu n lý các dòng làm vi c v i file C cung c p m t con tr ki u FILE tr n vùng m d li u (buffer) Logic View c a “dòng”.
  2. T p và con tr t p (tt) T p và con tr t p (tt) Qui ư c: Khai báo con tr file: - Khi m file c d li u, con tr file tr n ph n t u tiên c a file (ph n t th 0). FILE *; - M i file có m t i m k t thúc file EOF (end of Ví d : file). - Sau m i thao tác truy xu t d li u, con tr file t ng d ch chuy n n ph n t k ti p. FILE *f, *g;//g và f là 2 con tr FILE f EOF File Ph n lo i file Truy xu t file m c v t lý m i file u như nhau, u là dãy các Các hàm dùng chung cho c hai lo i file: byte trên b nh ngoài. d thao tác, m c logic C chia ra 2 lo i file: Hàm m file: văn b n và nh phân. File văn b n (text): - d li u ư c lưu d ng mã ASCII. - d u hi u k t thúc file EOF có mã là 26. File nh phân (binary): Ví d : - d li u ư c lưu d ng các byte nh phân (không quan tâm n ki u d li u mà các byte ó bi u di n). - d u hi u k t thúc file EOF = -1.
  3. Truy xu t file (tt) Truy xu t file (tt) Hàm óng file: Hàm xóa file: Hàm ki m tra k t thúc file: c d li u: Ghi d li u: Truy xu t file (tt) Truy xu t file văn b n #include #include void docFile() i v i file văn b n có các cách truy xu t { FILE *f; sau: char ch; if((f=fopen("d:\\baigiang\\oop\\dulieu.txt","rt"))==NULL) { - T/X có nh d ng: fprintf, fscanf. printf("\nloi mo file"); } return; - T/X chu i ký t : fgets, fputs. (t c) while((ch=fgetc(f))!=EOF) printf("%c",ch); Hàm fprintf: fclose(f); } void main() { docFile(); } Ví d 1
  4. Truy xu t file văn b n (tt) Truy xu t file văn b n (tt) void docfile(int a[], int *n) Ví d : { FILE *f; f=fopen("D:\\dulieu.txt","rt"); if(!f) { Hàm fscanf: printf("\nkhong mo duoc file");getch(); return; } *n=0; while(fscanf(f,"%d",&a[*n])!=EOF)++(*n); fclose(f); } Hàm c d li u t file “dulieu.txt” vào m ng a Truy xu t file nh phân Truy xu t file nh phân (tt) i v i file nh phân có các c p hàm t/x Hàm fwrite: sau: getw / putw (t c) fread / fwrite Hàm fread:
  5. Truy xu t file nh phân (tt) Truy xu t file nh phân (tt) Hàm ftell: