Tải bản đầy đủ (.ppt) (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.85 MB, 60 trang )

VIỆN
CÔNG NGHỆ
THÔNG TIN VÀ
TRUYỀN THÔNGSCHOOL 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


×