Tải bản đầy đủ (.ppt) (36 trang)

Chương 9 Tập tin (File)

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 (370.49 KB, 36 trang )

Ch ng 9ươ
Nội dung trình bày
Nội dung trình bày
1. Giới thiệu tập tin
2. Các bước xử lý tập tin
3. Đọc – Ghi tập tin văn bản (Text file)
4. Đọc – Ghi tập tin nhị phân (Binary file)
2
1. Giới thiệu tập tin
1. Giới thiệu tập tin

Tập tin là một tập hợp thông tin được đặt tên và
được chứa trong các thiết bị lưu trữ ngoài của
máy tính như: đĩa cứng, đĩa mềm, CD, DVD,…

Một tập tin luôn luôn kết thúc bằng 1 ký tự đặc
biệt ký hiệu là EOF (
End Of File
)

Tập tin gắn liền với bộ nhớ đệm (
buffer
) trong đó
các thông tin dữ liệu được lưu trữ tạm thời trước
khi có sự trung chuyển giữa bộ nhớ máy tính và
tập tin
3
1. Giới thiệu tập tin
1. Giới thiệu tập tin

Để tạo kết nối với một tập tin, dùng lệnh


fopen

Khi tập tin được mở, thông tin có thể được trao đổi
giữa tập tin đó với chương trình

Để ngắt kết nối với một tập tin, dùng lệnh
fclose

Nếu đóng một tập tin đang mở thì nội dung của
vùng đệm tương ứng được ghi ra thiết bị ngoài

Quá trình này được gọi là flushing và đảm bảo là
không có thông tin bị để lại trong vùng đệm
4
1. Giới thiệu tập tin: Minh họa
1. Giới thiệu tập tin: Minh họa
5
Dữ liệu đang xử lý
Tập tin
a
b
c
Vùng đệm (buffer)
a
c
a
c
fclose
1. Giới thiệu tập tin
1. Giới thiệu tập tin


Có 2 loại tập tin:

Tập tin văn bản

Tập tin nhị phân
Tập tin văn bản
Là tập tin mà các phần tử của
nó là các ký tự
Mỗi lần đọc hay ghi là đọc
hay ghi một ký tự
Khi xử lý ký tự chuyển dòng
LF được chuyển thành 2 ký tự
CR và LF
Tập tin nhị phân
Là tập tin mà các phần tử là
các số nhị phân biểu diễn
thông tin
Việc đọc hay ghi tuỳ thuộc
vào người lập trình
6
Nội dung trình bày
Nội dung trình bày
1. Giới thiệu tập tin
2. Các bước xử lý tập tin
3. Đọc – Ghi tập tin văn bản (Text file)
4. Đọc – Ghi tập tin nhị phân (Binary file)
7
Các bước xử lý tập tin
Các bước xử lý tập tin


Có 4 bước cơ bản để xử lý tập tin
1. Khai báo biến tập tin
2. Mở tập tin để ghi hoặc đọc
3. Ghi hoặc đọc tập tin (xử lý dữ liệu)
4. Đóng tập tin
8
Các bước xử lý tập tin:
Các bước xử lý tập tin:
Bước 1
Bước 1

Có 4 bước cơ bản để xử lý tập tin
1. Khai báo biến tập tin:

Ví dụ:
FILE *fp;
FILE *Tên_con_trỏ;
9
Các bước xử lý tập tin:
Các bước xử lý tập tin:
Bước 2
Bước 2

Có 4 bước cơ bản để xử lý tập tin
2. Mở tập tin: fopen

filename
: chứa đường dẫn và tên của tập tin cần mở


mode
: cho biết mở tập tin theo kiểu nào

r (đọc)

w (ghi)

a (ghi tiếp vào cuối tập tin)

r+ (đọc và ghi)

w+ (đọc và ghi, nhưng ghi đè lên nội dung cũ của tập tin)

a+ (đọc và ghi vào cuối tập tin)

rb, wb, ab, rb+, r+b, wb+, w+b, ab+, a+b giống như các
trường hợp trên nhưng chỉ dùng cho tập tin nhị phân
FILE* fopen( const char* filename, const char* mode );
10
Các bước xử lý tập tin:
Các bước xử lý tập tin:
Ví dụ
Ví dụ

Ví dụ: Mở tập tin
FILE *fp;
fp = fopen("d:\\test.txt","w");
if (fp == NULL)
{
cout << "Cannot open file";

exit(1);
}
11
Các bước xử lý tập tin:
Các bước xử lý tập tin:
Bước 3
Bước 3

Có 4 bước cơ bản để xử lý tập tin
3. Đọc hoặc ghi tập tin

Mỗi kiểu tập tin có cách đọc và ghi khác nhau

Chú ý:

Khi đọc dữ liệu từ 1 tập tin, phải kiểm tra xem có phải
là cuối tập tin hay chưa, vì đến cuối tập tin thì không
thể đọc được nữa

Để kiểm tra có phải cuối tập tin hay chưa, có thể dùng
hàm feof hoặc dùng kết quả của những hàm đọc tập
tin
int feof(FILE *fp);
12
Các bước xử lý tập tin:
Các bước xử lý tập tin:
Bước 4
Bước 4

Có 4 bước cơ bản để xử lý tập tin

4. Đóng tập tin:

fp: là con trỏ tập tin muốn đóng

Khi hàm được gọi, nó sẽ viết bất kỳ dữ liệu nào
vẫn còn trong vùng đệm đến tập tin rồi đóng tập
tin
int fclose( FILE *fp );
13
Các bước xử lý tập tin
Các bước xử lý tập tin

Như vậy một chương trình xử lý tập tin có dạng
chung như sau:
#include <iostream.h>
#include <stdio.h>
void main(){
FILE *fp;
fp = fopen("thidu.dat","w");
if (fp==NULL) {
cout<<"Khong mo duoc tap tin";
exit(0);
}
/* xử lý tập tin */
fclose(fp);
}
14
Nội dung trình bày
Nội dung trình bày
1. Giới thiệu tập tin

2. Các bước xử lý tập tin
3. Đọc – Ghi tập tin văn bản (Text file)
4. Đọc – Ghi tập tin nhị phân (Binary file)
15
Ghi tập tin văn bản:
Ghi tập tin văn bản:
putc -
putc -
fputc
fputc

Có hai hàm ghi ký tự vào tập tin là putc và
fputc. Hai hàm này là tương đương nhau

ch: kí tự muốn ghi vào tập tin

fp: con trỏ tập tin

Mỗi lần chỉ ghi được một kí tự vào tập tin
16
Ví dụ: putc -
Ví dụ: putc -
fputc
fputc

Đọc ký tự từ bàn phím và ghi vào file đến khi gặp
kí tự $
void main()
{
FILE *fp;

char ch;
if ( (fp=fopen(“test.txt”, "w")) == NULL )
{ cout << "Cannot open file.\n";
exit(1);
}
do {
ch = getchar(); //
đọc từ bàn phím
fputc(ch, fp); //
ghi vào file
}while (ch != '$');
fclose(fp); //đóng file
}
17
Đọc tập tin văn bản:
Đọc tập tin văn bản:
getc - fgetc
getc - fgetc



Hàm đọc: getc hoặc fgetc

fp: con trỏ tập tin
◦ Mỗi lần chỉ đọc một ký tự từ tập tin

Hàm trả về mã ASCII của ký tự đọc được, trả về
EOF nếu đọc được kí hiệu kết thúc tập tin
int getc( FILE *fp );
18

int fgetc( FILE *fp );
Ví dụ: getc - fgetc
Ví dụ: getc - fgetc



Đọc các kí tự từ file và xuất ra màn hình
void main()
{
FILE *fp; char ch;
if ( (fp=fopen("test.txt", "r")) == NULL )
{
cout << "Cannot open file.\n";
exit(1);
}
while (!feof(fp)) {
ch = fgetc(fp);
putchar(ch); // in ra màn hình
}
fclose(fp);
}
19
Ghi tập tin văn bản:
Ghi tập tin văn bản:
fputs
fputs

Hàm ghi 1 chuỗi vào tập tin: fputs

str: chuỗi cần ghi vào tập tin


fp: con trỏ tập tin
◦ Hàm trả về số >0 nếu ghi thành công, ngược lại
hàm trả về EOF nếu có lỗi xảy ra
int fputs( const char *str, FILE *fp );
20
Ví dụ:
Ví dụ:
fputs
fputs
void main()
{
char str[80]; FILE *fp;
if ( (fp = fopen("teststr.txt", "w")) == NULL )
{
cout << "Cannot open file.\n";
exit(1);
}
do {
cout << "Enter a string (CR to quit):\n";
gets(str);
strcat(str, "\n"); /* add a newline */
fputs(str, fp); // write str to file
} while( *str!='\n' );
fclose(fp);
}
21
Đọc tập tin văn bản:
Đọc tập tin văn bản:
fgets

fgets

Hàm đọc 1 chuỗi từ tập tin: fgets

str: chuỗi kí tự đọc được

length: số kí tự cần đọc

fp: con trỏ tập tin
◦ Đọc một chuỗi từ tập tin cho đến khi gặp ký tự
newline hay đã đọc được length-1 ký tự
◦ Hàm trả về str nếu đọc thành công và một con trỏ
null nếu không
char *fgets( char *str, int length, FILE *fp );
22
Ví dụ:
Ví dụ:
fgets
fgets
void main()
{
char str[80];
FILE *fp;
if ( (fp = fopen("teststr.txt", "r")) == NULL )
{
cout << "Cannot open file.\n";
exit(1);
}
while( !feof(fp) )
{

fgets (str, 80 , fp);
puts (str);
}
fc lo s e (fp);
}
23
Nội dung trình bày
Nội dung trình bày
1. Giới thiệu tập tin
2. Các bước xử lý tập tin
3. Đọc – Ghi tập tin văn bản (Text file)
4. Đọc – Ghi tập tin nhị phân (Binary file)
24
Ghi tập tin nhị phân:
Ghi tập tin nhị phân:
fwrite
fwrite

Hàm ghi: fwrite

buffer: địa chỉ dữ liệu cần ghi

size: kích thước dữ liệu muốn ghi (tính bằng byte)

count: số đối tượng muốn ghi

fp: con trỏ tập tin

Ví dụ:
fwrite(&i, sizeof(int), 1, fp);

int fwrite( const void *buffer, size_t size, size_t count, FILE *fp );
25

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×