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

Bài giảng Tin học đại cương - Bài 8: Tệp dữ liệu

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 (12.41 MB, 60 trang )

VIỆN 
CÔNG NGHỆ THÔNG 
TIN VÀ TRUYỀN 
THÔNG
S CHOOL OF INFORMATION 

& COMMUNICATION TECHNOLOGY

TIN HỌC ĐẠI CƯƠNG
PHẦN 2: LẬP TRÌNH BẰNG NGÔN NGỮ C

BÀI 8: TỆP DỮ LIỆU

1


TỆP DỮ LIỆU
8.1. Khái niệm và phân loại tệp
8.2. Các thao tác với tệp






8.2.1. Khai báo
8.2.2. Mở tệp
8.2.3. Truy nhập tệp văn bản
8.2.4. Truy nhập tệp nhị phân
8.2.5. Đóng tệp


8.3. Bài tập
2


TỆP DỮ LIỆU
8.1. Khái niệm và phân loại tệp
8.2. Các thao tác với tệp






8.2.1. Khai báo
8.2.2. Mở tệp
8.2.3. Truy nhập tệp văn bản
8.2.4. Truy nhập tệp nhị phân
8.2.5. Đóng tệp

8.3. Bài tập
3


8.1.1. Khái niệm
Khái niệm tệp




Tệp dữ liệu (File) là một tập hợp các dữ liệu 

có liên quan với nhau và có cùng kiểu dữ liệu. 
Tệp được lưu trữ trên các thiết bị nhớ ngoài 
(đĩa mềm, đĩa cứng, CD­ROM…) với một tên 
nào đó để phân biệt với nhau.

4


Mô hình lưu trữ dữ liệu
Bit – dữ liệu nhỏ nhất (0 hoặc 1)
Byte – 8 bits - Dùng để lưu trữ các ký tự,
số nguyên 1 byte
Trường (Field) – tập các byte dữ liệu
Bản ghi (Record) – tập các trường
Tệp (file) - một tập các bản ghi
Cơ sở dữ liệu (database) - tập các tệp

5


Mô hình lưu trữ dữ liệu

6


8.1.2. Phân loại tệp
Dựa theo bản chất dữ liệu của tệp, người 
ta chia tệp thành 2 loại:




Tệp văn bản 
Tệp nhị phân

7


8.1.2. Phân loại tệp (tiếp)
Tệp văn bản (text file):


Các phần tử của nó là các kí tự gồm:
Chữ cái
Chữ số
Các dấu câu
Các dấu cách 
Một số kí tự điều khiển





CR – Carriage Return – có mã ASCII là 13, để về đầu 
dòng
LF – Line Feed – có mã ASCII là 10, để xuống dòng mới


8



8.1.2. Phân loại tệp (tiếp)
Tệp nhị phân (binary file):






Các phần tử của nó là các số nhị phân 0 và 1 
mã hóa thông tin. 
Thông tin được mã hóa bởi các bit nhị phân 
có thể là số nguyên, số thực, các cấu trúc dữ 
liệu… 
Nếu thông tin được mã hóa là kí tự thì khi đó 
tệp nhị phân trở thành tệp văn bản. Vì vậy 
tệp văn bản là một trường hợp riêng của tệp 
nhị phân.
9


8.1.3. Vai trò của tệp
Khi chương trình kết thúc hoặc khi tắt máy 
thì các thông tin trong bộ nhớ chính (RAM) 
không còn. 
Muốn lưu trữ dữ liệu lâu dài để sử dụng 
cho những lần sau ta phải lưu dữ liệu lên 
tệp, tức là để dữ liệu nằm ở bộ nhớ ngoài. 
 Tệp là phương tiện dùng để cất giữ dữ 
liệu lâu dài.
10



8.1.4. Phân biệt tệp và mảng
Giống nhau:


Tập hợp các phần tử cùng kiểu. 

Khác nhau:

Tệp
Được lưu trữ trên bộ nhớ 
ngoài
Dữ liệu trên tệp tồn tại lâu dài, 
vẫn còn dù chương trình kết 
thúc hay tắt máy.
Kích thước của một tệp 
thường lớn hơn kích thước của 
một mảng rất nhiều.

Mảng
Được lưu trữ trên bộ nhớ trong 
Dữ liệu của mảng sẽ không 
còn khi chương trình kết thúc 
hoặc khi tắt máy.
Kích thước của một mảng 
thường nhỏ hơn kích thước 
của một tệp rất nhiều.
11



8.1.5. Tổ chức của tệp
Số lượng phần tử trong tệp không bị giới hạn 


Mỗi tệp đều chứa Phần tử cuối cùng được gọi là 
phần tử kí hiệu kết thúc tệp (End Of File indicator 
– EOF). 

Hệ điều hành sẽ tự động giúp ta tìm ra được vị 
trí lưu trữ phần tử đầu tiên của tệp trên đĩa.

12


8.1.6. Con trỏ tệp 
Để truy cập vào một phần tử của tệp  Sử 
dụng con trỏ tệp (File positon locator ) hay biến 
đệm.






Dùng để đánh dấu vị trí truy cập vào tệp tại thời điểm 
xác định.
Khi mở tệp, con trỏ tệp sẽ luôn trỏ vào vị trí đầu tiên 
của tệp.
Sau mỗi thao tác đọc ghi trên tệp, con trỏ tệp sẽ tự 

động dịch chuyển về phía cuối tệp. Khoảng cách 
dịch chuyển (tính theo byte) sẽ bằng số byte đã được 
đọc từ tệp hoặc ghi lên tệp
13


TỆP DỮ LIỆU
8.1. Khái niệm và phân loại tệp
8.2. Các thao tác với tệp






8.2.1. Khai báo
8.2.2. Mở tệp
8.2.3. Truy nhập tệp văn bản
8.2.4. Truy nhập tệp nhị phân
8.2.5. Đóng tệp

8.3. Bài tập
14


8.2. Các thao tác với tệp
Các thao tác với tệp phải tuân thủ theo 
trình tự sau: 






Khai báo tệp
Mở tệp để làm việc
Truy nhập tệp
Đóng tệp

15


TỆP DỮ LIỆU
8.1. Khái niệm và phân loại tệp
8.2. Các thao tác với tệp






8.2.1. Khai báo
8.2.2. Mở tệp
8.2.3. Truy nhập tệp văn bản
8.2.4. Truy nhập tệp nhị phân
8.2.5. Đóng tệp

8.3. Bài tập
16



8.2.1. Khai báo tệp
Cú pháp:
FILE *ten_con_tro_tep;
Ví dụ:
FILE *f1, *f2;

17


TỆP DỮ LIỆU
8.1. Khái niệm và phân loại tệp
8.2. Các thao tác với tệp






8.2.1. Khai báo
8.2.2. Mở tệp
8.2.3. Truy nhập tệp văn bản
8.2.4. Truy nhập tệp nhị phân
8.2.5. Đóng tệp

8.3. Bài tập
18


8.2.2. Mở tệp
Cú pháp:

ten_con_tro_tep = fopen(ten_tep,che_đo_mo_tep);



Ten_tep: Đường dẫn đến tệp cần mở.
Che_do_mo_tep: Tùy thuộc vào mục đích sử
dụng tệp và bản chất dữ liệu trên tệp.

Kết quả trả về:




Nếu mở thành công  Trả về một con trỏ tệp
tương ứng với tệp đã được mở
Nếu không  Trả về con trỏ NULL.
19


8.2.2. Mở tệp (tiếp)
Các chế độ mở tệp:





"rb", "wb", "ab", "r+b", "w+b", "a+b" và
"rt", "wt", "at", "r+t", "w+t", "a+t".

Kí tự cuối cùng: Bản chất dữ liệu của tệp

Kí tự đầu tiên: Mục đích sử dụng tệp.

20


8.2.2. Mở tệp (tiếp)

21


8.2.2. Mở tệp (tiếp)
Ví dụ: Với khai báo:
FILE * f1, * f2, *f3;


Để mở tệp c:\ sinh_vien.txt để đọc:
f1 = fopen("c:\\sinh_vien.txt", "r");



Để mở tệp c:\ho_so.dat để ghi:
f2 = fopen("c:\\ho_so.dat", "w");



Để mở tệp c:\abc.txt để vừa đọc và ghi:
f3 = fopen("c:\\abc.txt", "r+");

22



8.2.2. Mở tệp (tiếp)
Chú ý:




Khi mở tệp, nếu không chỉ rõ bản chất dữ liệu
của tệp thì C sẽ ngầm hiểu đó là tệp văn bản.
Ví dụ để mở tệp c:\ho_so.dat theo chế độ nhị
phân và để ghi, ta dùng lệnh:

f2 = fopen("c:\\ho_so.dat", "wb");

23


TỆP DỮ LIỆU
8.1. Khái niệm và phân loại tệp
8.2. Các thao tác với tệp






8.2.1. Khai báo
8.2.2. Mở tệp
8.2.3. Truy nhập tệp văn bản
8.2.4. Truy nhập tệp nhị phân

8.2.5. Đóng tệp

8.3. Bài tập
24


8.2.3. Truy nhập tệp văn bản
Đọc dữ liệu từ tệp


Các hàm: fscanf(), fgets(), getc()

Ghi dữ liệu lên tệp


Các hàm: fprintf(), fputs(), putc()

Một số thao tác khác


Các hàm: feof(), fseek(), rewind()

Lưu ý: Để sử dụng các hàm trên, cần khai
báo tệp tiêu đề stdio.h.
25


×