Tải bản đầy đủ (.pdf) (7 trang)

LẬP TRÌNH CĂN BẢN - KIỂU TẬP TIN ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (155.22 KB, 7 trang )

1
LẬP TRÌNH CĂN BẢN
KIỂU TẬP TIN
2
Nộidung chươngnày
l Một số khái niệm về tậptin
l Các thao tác trên tậptin
l Truy cập tậptin văn bản
l Truy cập tậptinnhị phân
3
Một số khái niệm về tậptin (file) (1)
l Tại sao ta cần đến kiểu tậptin?
l Cho phép lưu trữ dữ liệu ở bộ nhớ ngoài(đĩa).
l Khi 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.
l Kí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)
l Có3loại dữ liệu kiểu tậptin:
l Tậptin văn bản(Text File)
l Dùng để ghi các ký tự lên đĩa(dưới dạng mã Ascii)
l Cóchứa:
l Ký hiệu‘\n’:xuống dòng
l KítựEOF (End Of File)cómã Ascii là26:nằmởcuối tậptin
l Tậptin định kiểu(Typed File)
l Gồ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.
l Tậptin không định kiểu(UntypedFile)
l Gồ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ó.
l Tachỉ 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)
l Biến tậptin
l Được dùng để đại diện cho một tậptin
l Các thao tác lên tậptinsẽ được thực hiện thôngquabiến này
l Con trỏ tậptin
l Tạ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
l Tahìnhdungcó1 contrỏ đang chỉ đến vị trí đó
l Sau 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.
l Sau 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
l Khai báo biến tậptin
l Mở tậptin
l Đóng tậptin
l Kiểm tra đến cuối tậptin hay chưa?
l Di chuyểncontrỏ tậptinvề đầu tậptin -Hàm
rewind()
7
Khai báo biến tậptin
l Cúpháp:
FILE <Danh sách các biếncontrỏ>;
l Các biến trong danh sách phải làcáccontrỏ và
được phân cách bởi dấu phẩy(,).
l Vídụ:
FILE *f1,*f2;
8

Mở tậptin (1)
l Cúpháp:
FILE *fopen(char *Path, const char *Mode)
l Ýnghĩa:
l Trả về contrỏ tậptincủa tậptin được mở
l Trả về NULL nếu cólỗi
9
Mở tậptin (2)
l Path:chuỗi chỉ đường dẫn đến tậptin trên đĩa
l Type:chuỗi xác định cách thức màtậptinsẽmở.Các giátrị
cóthể của Mode:
10
Mở tậptin (3)
l Ví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
l Cúpháp: int fclose(FILE *f)
l Ghi dữ liệu còn lại trong vùng đệm vào tậptinvà đóng lại tậptin
l flàcontrỏ tậptin được mở bởi hàm fopen()
l Giátrị trả về là0báo rằng việc đóng tậptinthành công
l Giátrị trả về là EOF nếu cóxuất hiện lỗi

l Cúpháp: int fcloseall()
l Đóng tất cả các tậptinlại
l Trả về tổng số các tậptin được đóng lại
l Nế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?
l Cúpháp:
int feof(FILE *f)
l Ýnghĩa:
l Kiểm tra xem đã chạm tới cuối tậptin hay chưa.
l Trả 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()
l Cúpháp:
void rewind(FILE *f)
l Ýnghĩa:
l Làm chocontrỏ quayvề đầu tậptin như khi mở nó
14
Truy cập tậptin văn bản
l Ghi 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)
l Hà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

l c chứa mã Ascii của ký tự
l Hà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)
l Hà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
l Hàm này trả về giátrị 0 nếu buffer 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)
l Ví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)
l Hà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.
l format:chuỗi định dạng(giống với các định dạng của hàm
printf())
l varexpr: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)
l Hà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)
l Hà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)
l Hà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ả)
l buffer:chỉ đến cùng nhớ đủ lớn chứa các ký tự nhận được
l Ký tự NULL (‘\0’)tự động được thêm vào cuối chuỗi kết quả lưu
trong vùng đệm
l Hà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
21
Đọc dữ liệu từ tập tin văn bản (3)
l Hàm fscanf()
fscanf(FILE *f, const char *format,varlist)
l Được dùng để đọc dữ liệu từ tậptin văn bản vào danh
sách các biến theo định dạng.
l format:chuỗi định dạng(giống hàm scanf())
l varlist:danh sách các biến mỗi biến cách nhau dấu
phẩy(,).
22
Đọc dữ liệu từ tập tin văn bản (4)
l Vídụ:Viết chương trình chép tậptin D:\Baihat.txt ở trênsang
tậptin D:\Baica.txt.
23
Truy cập tậptinnhị phân

l Ghi dữ liệu lên tậptinnhị phân
l Đọc dữ liệu từ tậptinnhị phân
l Di chuyểncontrỏ tậptin
l Vídụ
24
Ghi dữ liệu lên tậptinnhị phân
l Hàm fwrite()
size_tfwrite(const void *ptr, size_t size, size_t n, FILE *f)
l ptr: contrỏ chỉ đến vùng nhớ chứa thôngtincần ghi lên tập
tin.
l n:sốphần tử sẽ ghi lên tậptin.
l size:kích thước của mỗi phần tử.
l f: contrỏ tậptin đã được mở.
l Giátrị trả về của hàm này làsốphần tử được ghi lên tậptin.
Giátrị này bằngntrừ khi xuất hiện lỗi.
25
Đọc dữ liệu từ tậptinnhị phân
l Hàm fread()
size_tfread(const void *ptr, size_t size, size_t n, FILE *f)
l ptr: contrỏ chỉ đến vùng nhớ sẽ nhận dữ liệu từ tậptin
l n:sốphần tử được đọc từ tậptin
l size:kích thước của mỗi phần tử
l f: contrỏ tậptin đã được mở
l Giátrị trả về của hàm này làsốphần tử đã đọc được từ
tậptin.Giátrị này bằngn haynhỏ hơn nnếu đã chạm
đến cuối tậptinhoặc cólỗi xuất hiện
26
Di chuyểncontrỏ tậptin
l Hàm fseek()
int fseek(FILE *f, long offset, int whence)

l Được dùng để di chuyểncontrỏ tậptin đến vị tríchỉ định
l f: contrỏ tậptin đang thao tác
l offset:sốbytecần dịch chuyểncontrỏ tậptinkểtừvịtrí trước đó.Phần
tử đầu tiên làvịtrí0.
l whence:vịtríbắt đầu để tínhoffset,ta cóthể chọn điểm xuất phát là
l Kết quả trả về của hàm là0nếu việc di chuyển thành công.Nếu không
thành công, 1giátrị khác0 (đólà1mã lỗi) được trả về.
27
Vídụ
l Viết chương trình ghi lên tậptinCacSo.Dat3giátrị số (thực,
nguyên,nguyên dài). Sau đó đọc các số từ tậptinvừa ghi và
hiển thị lên màn hình

×