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

Kỹ thuật lập trình - File pdf

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 (165.46 KB, 5 trang )

Chương 6
Tệp tin (file)
Đặt vấn đề
 Các CTDL đã khảo sát có cùng 1 đặc
tính đó là được lưu trữ ở bộ nhớ trong
(RAM), do đó dữ liệu sẽ mất khi kết thúc
chương trình.
 Cần có một cách tổ chức lưu trữ dữ liệu
lâu dài, đó là trên bộ nhớ ngoài (disk,
tape, ).
 Trên bộ nhớ ngoài dữ liệu được tổ chức
thành các tệp tin (file).
Đặt vấn đề (tt)
Mảng Tệp
RAM
DISK
Logic View
Tệp và con trỏ tệp

Vì t

p là CTDL trên b

nh

ngoài (BNN) nên v

i các
thi
ế
t b



khác nhau có cách t

ch

c l
ư
u tr

v

t lý khác
nhau.
Điề
u này gây tr

ng

i cho ch
ươ
ng trình khi
mu

n truy xu

t t

p (vì nó c

n ph


i bi
ế
t nó
đang l
àm
vi

c v

i thi
ế
t b

gì, theo cách nh
ư
th
ế
nào ).

Để
kh

c ph

c, C xây d

ng
đố
i t

ượ
ng “dòng”
(
stream).
Ch
ươ
ng trình ch

làm vi

c v

i các dòng, ph

n còn l

i
(t
ươ
ng tác gi

a “dòng” v

i file v

t lý
đượ
c x

lý s


n).
V

i cách làm nh
ư
v

y vi

c truy xu

t file tr
ở nên độ
c
l

p v

i các thi
ế
t b

v

t lý.

Để
qu


n lý các dòng làm vi

c v

i file C cung c

p m

t
con tr

ki

u FILE tr
ỏ đế
n vùng
đệ
m d

li

u (buffer)
c

a “dòng”.
Tệp và con trỏ tệp (tt)
 Khai báo con trỏ file:
 Ví dụ:
FILE *<tên con trỏ>;
FILE *f, *g;//g và f là 2 con trỏ FILE

Tệp và con trỏ tệp (tt)
 Qui ước:
-
Khi mở file để đọc dữ liệu, con trỏ file trỏ đến
phần tử đầu tiên của file (phần tử thứ 0).
-
Mỗi file có một điểm kết thúc file EOF (end of
file).
-
Sau mỗi thao tác truy xuất dữ liệu, con trỏ file
tự động dịch chuyển đến phần tử kế tiếp.
EOF
f
File
Phần loại file


m

c
độ
v

t lý m

i file
đề
u nh
ư
nhau,

đề
u là dãy các
byte trên b

nh

ngoài.

Để
d

thao tác,

m

c
độ
logic C chia ra 2 lo

i file:

v
ă
n b

n và nh

phân.

File v

ă
n b

n (text):
-
d

li

u
đượ
c l
ư
u

d

ng mã ASCII.
-
d

u hi

u k
ế
t thúc file EOF có mã là 26.

File nh

phân (binary):

-
d

li

u
đượ
c l
ư
u

d

ng các byte nh
ị phân
(không
quan tâm
đế
n ki

u d

li

u mà các byte
đ
ó bi

u di


n).
-
d

u hi

u k
ế
t thúc file EOF = -1.
Truy xuất file
 Các hàm dùng chung cho cả hai loại file:
 Hàm mở file:
 Ví dụ:
Truy xuất file (tt)
 Hàm đóng file:
 Hàm kiểm tra kết thúc file:
Truy xuất file (tt)
 Hàm xóa file:
 Đọc dữ liệu:
 Ghi dữ liệu:
Truy xuất file (tt)
#include <stdio.h>
#include <conio.h>
void docFile()
{
FILE *f;
char ch;
if((f=fopen("d:\\baigiang\\oop\\dulieu.txt","rt"))==NULL)
{
printf("\nloi mo file");

return;
}
while((ch=fgetc(f))!=EOF)
printf("%c",ch);
fclose(f);
}
void main()
{
docFile();
}
Ví dụ 1
Truy xuất file văn bản
 Đối với file văn bản có các cách truy xuất
sau:
- T/X có định dạng: fprintf, fscanf.
- T/X chuỗi ký tự: fgets, fputs. (tự đọc)
 Hàm fprintf:
Truy xuất file văn bản (tt)
 Ví dụ:
 Hàm fscanf:
Truy xuất file văn bản (tt)
void docfile(int a[], int *n)
{
FILE *f;
f=fopen("D:\\dulieu.txt","rt");
if(!f)
{
printf("\nkhong mo duoc file");getch();
return;
}

*n=0;
while(fscanf(f,"%d",&a[*n])!=EOF)++(*n);
fclose(f);
}
Hàm đọc dữ liệu từ file “dulieu.txt” vào mảng a
Truy xuất file nhị phân
 Đối với file nhị phân có các cặp hàm t/x
sau:
 getw / putw (tự đọc)
 fread / fwrite
 Hàm fread:
Truy xuất file nhị phân (tt)
 Hàm fwrite:
Truy xuất file nhị phân (tt)
 Hàm ftell:
Truy xuất file nhị phân (tt)

×