Bài giảng Nhập môn về lập trình - Chương 9: Sử dụng tập tin (file)
Chương 9
Sꢀ dꢁng tꢂp tin (file)
Presenter:
Nhập môn về lập trình (C9)
Slide 1
Learning outcomes
L.O.7.1 – Khai báo được kiểu tꢂp tin.
L.O.7.2 – Giải thích được các kiểu mở và đóng tꢂp tin.
L.O.7.3 – Giải thích được nguyên tắc làm việc với tꢂp tin.
L.O.7.4 – Hiện thực được bằng C để lấy dữ liệu từ tꢂp tin
hay để ghi dữ liệu vào tꢂp tin.
L.O.7.5 – Sꢀ dꢁng được C để giải quyết bài toán trong thực
tế.
L.O.7.6 – Sꢀ dꢁng được macro.
Nhập môn về lập trình (C9)
Slide 2
Tꢂp tin (file)
Khꢃi niệm chung
Tꢂp tin (file) trên đꢄa thưꢅng chia ra cꢃc loꢆi chꢇnh:
• Văn bꢀn: lưu thông tin theo dꢆng chuꢈi kꢉ tự theo mꢊ quy đꢋnh
(ISO8859-1/ASCII, unicode). Có thể xem bằng cꢃc chương trꢌnh
soꢆn thảo văn bản như notepad, wordpad, MSword, ...
• Nhꢁ phân: thông tin lưu dưới dꢆng chuꢈi byte nhꢋ phân (binary).
Dꢍng để lưu trữ chương trꢌnh mꢊ mꢃy, dữ liệu dꢆng nꢎn, dữ liệu
mꢊ hoꢃ, ...
• Cꢂu trꢃc/mꢄu tin: thông tin lưu theo khꢏi có cấu trꢐc giꢏng nhau
(mꢑu tin). Thưꢅng dꢍng trong quản lꢉ hꢒ sơ, dữ liệu có sꢏ lượng
lớn.
• Đꢁnh dꢅng phꢆn mꢇm chuyên dꢈng: thông tin được mꢊ hoꢃ do
hꢊng phꢓn mꢔm quy đꢋnh. Muꢏn đꢕc được thông tin, cꢓn thực
hiện giải mꢊ (chꢌa khoꢃ giải mꢊ thưꢅng phải mua từ hꢊng phꢓn
mꢔm).
Nhập môn về lập trình (C9)
Slide 3
Tꢂp tin (file)
Dưới góc nhꢌn cꢖa ngôn ngữ C
Đꢏi với C, tꢂp tin được nhꢌn theo dꢆng dữ liệu thô:
• Chuꢉi kꢊ tꢋ (dꢍng cho tꢂp tin văn bản).
• Chuꢉi byte (dꢍng cho tꢂp tin nhꢋ phân hoꢗc cấu trꢐc).
Ngoꢘi ra, tꢂp tin được lưu trữ trên cây thư mꢁc chꢋu sự
quản lꢉ cꢖa Hꢌ điꢇu hꢍnh nên mꢕi vấn đꢔ có liên quan
đến tꢂp tin đꢔu phải tuân theo thꢖ tꢁc, qui trꢌnh qui đꢋnh
bởi Hệ điꢔu hꢘnh.
C hꢙ trợ cꢃc hꢘm thư viện giꢐp ngưꢅi lꢂp trꢌnh có thể tiếp
cꢂn, “xin phꢎp” Hệ điꢔu hꢘnh để có thể lꢘm việc với tꢂp tin
theo đꢋnh dꢆng mong muꢏn.
Ngưꢅi lꢂp trꢌnh phải tự quản lꢉ vꢔ mꢗt ꢊ nghꢎa cꢖa thông
tin trên tꢂp tin.
Nhập môn về lập trình (C9)
Slide 4
Tꢂp tin
Thꢖ tꢁc / Quy trꢌnh
(Chưa có : báo lꢉi)
Mở
Mở và tạo mới : tạo mối
quan hệ quản lý giữa tập tin
trên đĩa (đặc trưng bằng tên
tập tin) với biến trong bộ
nhớ.
Tꢅo mới
(Có rồi : nội dung bꢁ mꢂt)
Xử lý : thay đổi nội
dung tập tin hoặc thêm
thông tin mới vào tập
tin.
Xử lꢊ
(Phꢆn thông tin quꢀn lꢊ tập tin)
(Phꢆn nội dung tập tin)
[Dời con trỏ tập tin], [đọc], [ghi]
Đóng
Đóng : Cắt đứt quan hệ giữa
tập tin trên đĩa và chương
trình.
Nhập môn về lập trình (C9)
Slide 5
Tꢂp tin (file)
Kiểu tꢂp tin (FILE *)
Biến trong chương trꢌnh dꢍng để gắn kết với tꢂp tin trên
đꢄa ở bước mở/tꢆo file phải được đꢋnh nghꢄa với kiểu đꢗc
biệt như cꢐ phꢃp sau:
FILE *<tên biến>
Vꢇ dꢁ: FILE *stream;
FILE *fileptr;
Kiểu FILE lꢘ kiểu cấu trꢐc do C đꢋnh nghꢄa sꢚn. Cꢃc
thꢘnh phꢓn cꢖa nó được dꢍng để quản lꢉ tꢂp tin gắn kết
với biến kiểu FILE * (cꢃc thông tin cꢓn thiết để lꢘm việc
với tꢂp tin như: tên, chiꢔu dꢘi byte, ngꢘy/giꢅ tꢆo tꢂp tin,
ngꢘy/giꢅ cꢂp nhꢂt gꢓn nhất, . . . ).
Nhập môn về lập trình (C9)
Slide 6
Tꢂp tin (file)
Mở / tꢆo tꢂp tin
Hꢘm thư viện mở/tꢆo tꢂp tin:
FILE *fopen( const char *filename, const char *mode );
trong đó:
• filename lꢘ tên tꢂp tin trên đꢄa
Vꢇ dꢁ: “C:\MSSV_Vc\”ThapHN.cpp”, “Hamdq.h”
• mode qui đꢋnh chế đꢛ mở/tꢆo tꢂp tin
“r” : mở để đꢕc.
“w” : mở để ghi.
“a” : mở để thêm vꢘo.
“r+”, mở để vừa đꢕc vừa ghi, tꢂp tin phải có rꢒi.
“w+” : tꢆo mới (hoꢗc xoꢃ nꢛi dung cꢜ) để vừa đꢕc vừa ghi.
“a+” : mở/tꢆo mới để vừa đꢕc vừa thêm vꢘo.
“t” : thêm vꢘo cuꢏi để chꢕn tꢂp tin văn bản.
“b” :thêm vꢘo cuꢏi để chꢕn tꢂp tin nhꢋ phân.
Nhập môn về lập trình (C9)
Slide 7
Tꢂp tin (file)
Vꢇ dꢁ 1
Nhập môn về lập trình (C9)
Slide 8
Tꢂp tin (file)
Hꢘm fprintf( )
Hꢘm thư viện ghi tꢂp tin theo đꢋnh dꢆng:
int fprintf( FILE *stream, const char *format [, argument ]... );
Việc sꢀ dꢁng hꢘm fprintf( ) tương tự như hꢘm printf( ),
chꢝ có khꢃc ở chꢈ những gꢌ in ra mꢘn hꢌnh sꢞ được ghi
lên tꢂp tin stream.
Vꢇ dꢁ:
fprintf(fptr,"%d%s%.0g\n",10,"!= ",gt(10));
fprintf(stream,"%s%d\n","S= ",x*2+3);
Nhập môn về lập trình (C9)
Slide 9
Tꢂp tin (file)
Hꢘm fscanf_s( )
Hꢘm thư viện đꢕc dữ liệu từ tꢂp tin theo đꢋnh dꢆng:
int fscanf_s( FILE *stream, const char *format [, argument ]... );
Việc sꢀ dꢁng hꢘm fscanf_s( ) tương tự như hꢘm
scanf_s( ), chꢝ có khꢃc ở chꢈ những gꢌ lꢟ ra nhꢂp từ bꢘn
phꢇm sꢞ được đꢕc vꢘo từ tꢂp tin stream.
Vꢇ dꢁ:
fscanf_s(i_file,"%d",&n);
fscanf_s(stream,"%f",&(sv1->diem_btl);
Nhập môn về lập trình (C9)
Slide 10
Tꢂp tin (file)
Hꢘm tham khảo thêm
Hꢘm fread():
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
Hꢘm fwrite():
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
Hꢘm fputc():
int fputc( int c, FILE *stream );
Hꢘm fgetc():
int fgetc( FILE *stream );
Hꢘm feof():
int feof( FILE *stream );
. . .
Nhập môn về lập trình (C9)
Slide 11
Bạn đang xem tài liệu "Bài giảng Nhập môn về lập trình - Chương 9: Sử dụng tập tin (file)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- bai_giang_nhap_mon_ve_lap_trinh_chuong_9_su_dung_tap_tin_fil.pdf