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:  
Slide 1  
Nhập môn về lập trình (C9)  
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.  
Slide 2  
Nhập môn về lập trình (C9)  
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).  
Slide 3  
Nhập môn về lập trình (C9)  
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.  
Slide 4  
Nhập môn về lập trình (C9)  
Tập tin  
Thủ tục / Quy trình  
(Chưa có : báo lỗi)  
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ớ.  
Mở  
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.  
Slide 5  
Nhập môn về lập trình (C9)  
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, . . . ).  
Slide 6  
Nhập môn về lập trình (C9)  
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à chuỗi chứa tên tập tin trên đĩa  
Ví dụ: “C:\MSSV_Vc\”ThapHN.c”, “Hamdq.h”  
• mode qui định chế độ mở/tạo tập tin  
“r” : mở để đọc (báo lỗi nếu chưa có).  
“w” : mở để ghi (xóa nội dung nếu đã có).  
“a” : mở để thêm vào cuối (tạo mới nếu chưa tồn tại).  
“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.  
Slide 7  
Nhập môn về lập trình (C9)  
Tập tin (file)  
Ví dụ 1, ghi file van ban  
Slide 8  
Nhập môn về lập trình (C9)  
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, ...)  
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);  
Slide 9  
Nhập môn về lập trình (C9)  
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(FILE *stream, const char *format, ...)  
Việc sử dụng hàm fscanf() tương tự như hàm  
scanf(), 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(i_file,"%d",&n);  
fscanf(stream,"%f",&(sv1->diem_btl);  
Slide 10  
Nhập môn về lập trình (C9)  
Tập tin (file)  
Ví dụ 2  
Slide 11  
Nhập môn về lập trình (C9)  
Tập tin (file)  
Đóng tập tin  
Hàm thư viện đóng tập tin:  
int fclose(FILE *stream)  
trong đó:  
• stream là tập tin cần đóng.  
• Các vùng đệm ẩn dành riêng cho tập tin sẽ bị xóa.  
• Tập tin sau khi đóng, muốn dùng lại, phải mở lại.  
Slide 12  
Nhập môn về lập trình (C9)  
Tập tin (file)  
Hàm tham khảo thêm trong stdio.lib  
Tham khảo 1  
Tham khảo 2  
Tham khảo 3  
Slide 13  
Nhập môn về lập trình (C9)  
Tập tin (file)  
Ví dụ ghi/đọc file binary  
Ghi file binary  
Đọc file binary  
Slide 14  
Nhập môn về lập trình (C9)  
Tập tin (file)  
Ví dụ ghi/đọc file dữ liệu cấu trúc  
Ghi file cấu trúc  
Đọc file cấu trúc  
Slide 15  
Nhập môn về lập trình (C9)  
MACRO  
#define preprocessor  
MACRO là một đoạn code được đặt tên.  
MACRO sẽ được thay thế ở giai đoạn tiền xử lý  
(preprocessing).  
Ta dùng chỉ thị #define để định nghĩa MACRO theo cú  
pháp:  
#define  
<tên> <đoạn code>  
Slide 16  
Nhập môn về lập trình (C9)  
MACRO  
Hàm MACRO dùng #define  
Ta cũng có thể dùng #defineđể định nghĩa MACRO có  
tham số dùng như gọi hàm:  
dt_tron(7) (3.14159*7*7)  
Slide 17  
Nhập môn về lập trình (C9)  
MACRO  
Các toán tử  
"\" : đặt cuối dòng cho phép xuống dòng viết tiếp.  
"#" : đặt trước tham số sẽ đổi tham số thành chuỗi ký tự.  
"##" : ghép tham số với một cụm từ thành tên biến, tên  
hàm.  
inso(f,8) printf("%f\n",so8);  
inso(d,5) printf("%d\n",so5);  
Slide 18  
Nhập môn về lập trình (C9)  
MACRO có sẳn  
__FILE__ : trả về string là tên file chương trình với  
đường dẫn.  
__DATE__: trả về string ngày tháng năm.  
__TIME__: trả về string giờ phút giây.  
__LINE__: trả về số nguyên là thứ tự dòng hiện tại.  
__STDC__: trả về số 1 nếu dùng ANSI C chuẩn.  
Slide 19  
Nhập môn về lập trình (C9)  
MACRO  
Một số preprocessor khác  
#undef: loại bỏ tên một MACRO đã có.  
#ifndef MACRO  
#define MACRO ... |  
#endif  
|
#ifdef MACRO  
...  
#endif  
|
Hỏi xem MACRO đã được định nghĩa chưa?  
#if <điều kiện 1>  
...  
#elif <điều kiện 2>  
...  
#else  
...  
#endif  
Slide 20  
Nhập môn về lập trình (C9)  
pdf 20 trang myanh 18160 Free
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:

  • pdfbai_giang_nhap_mon_ve_lap_trinh_chuong_9_su_dung_tap_tin_fil.pdf