
1
LẬP TRÌNH CĂN BẢN
KIỂU TẬP TIN
2
Nộidung chươngnày
lMột sốkhái niệm vềtậptin
lCác thao tác trên tậptin
lTruy cập tậptin văn bản
lTruy cập tậptinnhịphân
3
Một sốkhái niệm vềtậptin (file) (1)
lTại sao ta cần đến kiểu tậptin?
lCho phép lưu trữdữliệuởbộnhớngoài(đĩa).
lKhi kết thúc chương trình thìdữliệu vẫn còndo
đóchúng ta cóthểsửdụng nhiều lần.
lKích thước lớn dữliệu không hạn chế.
4
Một sốkhái niệm vềtậptin (file) (2)
lCó3loại dữliệu kiểu tậptin:
lTậptin văn bản(Text File)
lDùng để ghi các ký tự lên đĩa(dưới dạng mã Ascii)
lCóchứa:
lKý hiệu‘\n’:xuống dòng
lKítựEOF (End Of File)cómã Ascii là26:nằmởcuối tậptin
lTậptin định kiểu(Typed File)
lGồm nhiều phần tửcócùng kiểu: char,int, long,struct…
lĐược lưu trữ trên đĩa dưới dạng một chuỗi cácbyteliên tục.
lTậptin không định kiểu(UntypedFile)
lGồm các cấu trúc dữliệu mà ta không quan tâm đến nộidung
hoặc kiểu của nó.
lTachỉ lưuý đến các yếu tốvật lý của tậptin như độ lớn, ...

5
Một sốkhái niệm vềtậptin (file)(3)
lBiến tậptin
lĐược dùng để đại diện cho một tậptin
lCác thao tác lên tậptinsẽ được thực hiện thôngquabiến này
lCon trỏtậptin
lTại mỗi thời điểm,sẽcómột vịtrícủa tậptinmàtại đóviệc
đọc/ghi thôngtinsẽxảy ra
lTahìnhdungcó1 contrỏ đang chỉ đến vịtrí đó
lSau khi đọc/ghi xong dữliệu, contrỏsẽchuyển dịch thêm một
phần tửvềphía cuối tậptin.
lSau phần tửdữliệu cuối cùng của tậptinlàdấu kết thúc tậptin
EOF
6
Các thao tác trên tậptin
lKhai báo biến tậptin
lMởtậptin
lĐóng tậptin
lKiểm tra đến cuối tậptin hay chưa?
lDi chuyểncontrỏtậptinvề đầu tậptin -Hàm
rewind()
7
Khai báo biến tậptin
lCúpháp:
FILE <Danh sách các biếncontrỏ>;
lCác biến trong danh sách phải làcáccontrỏvà
được phân cách bởi dấu phẩy(,).
lVídụ:
FILE *f1,*f2;
8
Mởtậptin (1)
lCúpháp:
FILE *fopen(char *Path, const char *Mode)
lÝnghĩa:
lTrảvềcontrỏtậptincủa tậptin được mở
lTrảvềNULL nếu cólỗi

9
Mởtậptin (2)
lPath:chuỗi chỉ đường dẫn đến tậptin trên đĩa
lType:chuỗi xác định cách thức màtậptinsẽmở.Các giátrị
cóthểcủaMode:
10
Mởtậptin (3)
lVídụ:Mởmột tậptintênTEST.txt để ghi.
FILE *f;
f =fopen(“TEST.txt”, “w”);
if (f!=NULL){
//Các câu lệnh đểthao tác với tậptin
// Đóng tậptin
}
=>mởtậptin để ghi
=>nếu tậptin đã tồn tại rồi thìtậptinsẽbịxóa vàmột
tậptinmới được tạo ra
11
Đóng tậptin
lCúpháp:int fclose(FILE *f)
lGhi dữliệu còn lại trong vùng đệm vào tậptinvà đóng lại tậptin
lflàcontrỏtậptin được mởbởi hàm fopen()
lGiátrịtrảvềlà0báo rằng việc đóng tậptinthành công
lGiátrịtrảvềlà EOF nếu cóxuất hiện lỗi
lCúpháp:int fcloseall()
lĐóng tất cảcác tậptinlại
lTrảvềtổng sốcác tậptin được đóng lại
lNếu không thành công,kết quảtrảvềlàEOF
12
Kiểm tra đến cuối tậptin hay
chưa?
lCúpháp:
int feof(FILE *f)
lÝnghĩa:
lKiểm tra xem đã chạm tới cuối tậptin hay chưa.
lTrảvềEOFnếu cuối tậptin được chạm tới, ngược lại
trảvề0.

13
Di chuyểncontrỏtậptinvề đầu
tậptin -Hàmrewind()
lCúpháp:
void rewind(FILE *f)
lÝnghĩa:
lLàm chocontrỏquayvề đầu tậptin như khi mởnó
14
Truy cập tậptin văn bản
lGhi dữliệu lên tậptin văn bản
lĐọc dữliệu từtập tin văn bản
15
Ghi dữliệu lên tậptin văn bản(1)
lHàm putc()
int putc(intc, FILE *f)
lĐược dùng để ghi một ký tựlên một tậptin văn bản
đang được mở(liên kết vớicontrỏf) để làm việc
lcchứa mã Ascii của ký tự
lHàm này trảvềEOF nếu gặp lỗi
16
Ghi dữliệu lên tậptin văn bản(2)
lHàm fputs()
int fputs(const char *buffer, FILE *f)
lĐược dùng để ghi một chuỗi ký tựchứa trong vùng
đệm lên tậptin văn bản
lHàm này trảvềgiátrị0nếubuffer chứa chuỗi rỗng và
trảvềEOF nếu gặp lỗi

17
Ghi dữliệu lên tậptin văn bản(3)
lVídụ:Viết chương trình ghi chuỗi ký tựlên tậptin văn bản
D:\\Baihat.txt
18
Ghi dữliệu lên tậptin văn bản(3)
lHàm fprintf()
fprintf(FILE *f, const char *format,varexpr)
lĐược dùng để ghi dữliệu có định dạng lên tậptin văn bản.
lformat:chuỗi định dạng(giống với các định dạng của hàm
printf())
lvarexpr:danh sách các biểu thức,mỗi biểu thức cách nhau
dấu phẩy(,)
19
Đọc dữliệu từtập tin văn bản(1)
lHàm getc()
int getc(FILE *f)
lĐược dùng để đọc dữliệu từtập tin văn bản đang được mở
để làm việc (liên kết với f)
lHàm này trảvềmã Ascii của một ký tự được đọc(kểcả
EOF)
20
Đọc dữliệu từtập tin văn bản(2)
lHàm fgets()
char *fgets(char *buffer, int n, FILE *f)
lĐược dùng để đọc1chuỗi ký tựtừtậptin văn bản đang được mở
(liên kết vớicontrỏf)
lĐọc cho đến khi đủ nký tựhoặc gặp ký tựxuống dòng‘\n’(ký tự
này cũng được đưa vào chuỗi kết quả) haygặp ký tựkết thúc
EOF (ký tựnày không được đưa vào chuỗi kết quả)
lbuffer:chỉ đến cùng nhớ đủ lớn chứa các ký tựnhận được
lKý tựNULL (‘\0’)tự động được thêm vào cuối chuỗi kết quả lưu
trong vùng đệm
lHàm trảvề địa chỉ đầu tiên của vùng đệm khi không gặp lỗi và
chưa gặp ký tựkết thúcEOF. Ngược lại,hàm trảvềgiátrịNULL