Bài giảng Tin học đại cương - Phần 6: File

6. File  
Nội dung  
File văn bản  
Các chế độ mở file văn bản  
Vào ra với file văn bản  
6.1 Các thao tác cơ bản  
6. File  
Màn hình máy tính có khả năng hiển thị hữu hạn  
Bộ nhớ trong của máy tính có dung lượng nhỏ, dữ liệu lưu  
trong bộ nhớ trong sẽ bị mất khi chương trình kết thúc hoặc  
tắt máy  
làm thế nào để lưu các dữ liệu với kích thước lớn ?  
Làm sao để ta không cần nhập lại dữ liệu mỗi khi chạy  
chương trình?  
Giải pháp : lưu trữ dữ liệu bằng file trên bộ nhớ thứ cấp (bộ  
nhớ ngoài)  
Cách tchc dliu trên đĩa:  
Dliu được tchc thành các file và thư mc  
Dliu được lưu trdưới dng nhphân  
Cách lưu trdliu nhphân khác nhau trong các  
hthng khác nhau  
Hđiu hành qun lý vic lưu trdliu, chương  
trình C sdng các hàm viết cho các hthng  
khác nhau đthc hin vào ra dliu  
6.1 Các thao tác cơ bản  
Các thao tác cơ bản với file:  
Tạo file mới  
Mở một file đã có  
Đọc dữ liệu từ file  
Ghi dữ liệu ra file  
Di chuyển đến một vị trí trong file (seeking)  
Đóng file  
VD. Chương trình mở file data.dat nằm trên ổ đĩa C  
hiển thị nội dung của file ra màn hình.  
6.1 Các thao tác cơ bản  
/* Hiển thị nội dung file data.dat ra màn hình. */  
# include "stdio.h"  
int main(void)  
{
FILE *fp ;  
char ch ;  
fp = fopen ( "C:\\data.dat", "r" ) ;  
do  
{
ch = fgetc ( fp ) ;  
if (ch != EOF)  
printf ( "%c", ch ) ;  
}
while(ch != EOF);  
fclose ( fp ) ;  
return 0;  
}
6.1 Các thao tác cơ bản  
Mở file: để đọc (hoặc ghi) file thì trước hết cần mở file  
Dùng hàm fopen() với tham số là :  
Tên file (và đường dẫn)  
Xâu tham số (VD. Để đọc thì là “r”, để ghi là “w”)  
Các thao tác thực hiện khi mở file ở chế độ “r”  
1. Tìm file trên đĩa  
2. Nạp file từ đĩa vào một nơi trong bộ nhớ (gọi là buffer)  
3. Tạo ra con trỏ char trỏ vào ký tự đầu tiên trong buffer  
6.1 Các thao tác cơ bản  
6.1 Các thao tác cơ bản  
Khi đọc thành công fopen() sẽ trả về các thông tin được  
chứa trong cấu trúc FILE, fopen() trả về địa chỉ của cấu  
trúc này.  
Phải khai báo một biến con trỏ kiểu FILE để chứa địa chỉ  
trả về:  
FILE *tên_biến_file;  
VD. FILE *fp;  
Cấu trúc FILE được định nghĩa trong stdio.h  
6.1 Các thao tác cơ bản  
Kiểm tra lỗi khi mở FILE  
Khi mở file bị lỗi (file không tồn tại, hoặc đường dẫn sai  
…) thì con trỏ file nhận giá trị trả về NULL  
Kiểm tra lỗi khi mở bằng giá trị con trỏ trả về!  
FILE *fp ;  
fp = fopen ( "C:\\data.dat", "r" ) ;  
if ( fp == NULL )  
{
puts ( "cannot open file" ) ;  
exit( ) ;  
}
6.1 Các thao tác cơ bản  
Đọc nội dung từ FILE  
Đọc một tự tại con trỏ của file : fgetc()  
ch=fgetc(fp);  
FILE được đánh dấu kết thúc bằng tự đặc biệt EOF  
(end-of-file) (được định nghĩa trong stdio.h)  
while(ch != EOF);  
thể dùng getc() thay cho fgetc()  
ch=getc(fp);  
6.1 Các thao tác cơ bản  
Đóng file: sau khi thao tác xong với file ta cần đóng file để  
các ứng dụng khác có thể sử dụng file đó.  
fclose(tên_biến_file);  
VD. fclose(fp);  
Các thao tác khi đóng file  
Các ký tự trong bộ nhớ đệm (buffer) sẽ được ghi ra  
file trên đĩa  
tự EOF (mã ASCII là 26) sẽ được ghi vào cuối file  
Bộ nhớ đệm sẽ được giải phóng khởi bộ nhớ  
6.1 Các thao tác cơ bản  
dụ: đọc một file văn bản, đếm và in ra màn hình số lượng tự,  
số lượng tab(‘\t’), cách trống(‘ ’) xuống dòng(‘\n’).  
# include "stdio.h"  
int main(void)  
{
FILE *fp ;  
char ch ;  
int noLine = 0, noTab = 0, noBlank = 0, noChar = 0 ;  
fp = fopen ( "C:\\data.txt", "r" ) ;  
if(fp!=NULL)  
{
do  
{
ch = fgetc ( fp ) ;  
if ( ch != EOF )  
noChar++ ;  
if ( ch == ' ' )  
noBlank++ ;  
if ( ch == '\n' )  
noLine++ ;  
if ( ch == '\t' )  
noTab++ ;  
}
while(ch!=EOF);  
fclose ( fp ) ;  
printf ( "\nSo luong ky tu = %d", noChar ) ;  
printf ( "\nSo luong cach trong = %d", noBlank ) ;  
printf ( "\nSo luong tab = %d", noTab ) ;  
printf ( "\nSo luong dong = %d", noLine ) ;  
}
else  
printf("Co loi khi mo file.\n");  
return 0;  
}
6.1 Các thao tác cơ bản  
Ghi file: ghi một tự ra file fputc()  
dụ. Chương trình copy nội dung 2 file dùng fgetc() và  
fputc()  
FILE *fSource,*fTarget ;  
char ch ;  
fSource = fopen ( "C:\\data.txt", "r" ) ;  
fTarget = fopen ( "C:\\data_backup.txt", "w" ) ;  
if(fSource!=NULL && fTarget!=NULL) {  
do{  
ch = fgetc (fSource) ;  
fputc(ch,fTarget);  
}
while(ch!=EOF);  
fclose (fSource); fclose (fTarget);  
}
6.2 Các chế độ mở File  
6.2 Các chế độ mở File  
Tham số  
Tác dụng  
Khả năng  
Tìm file, nếu có thì nạp vào bộ nhớ và  
trả về con trỏ trỏ vào ký tự đầu tiên,  
ngược lại trả về NULL  
Đọc dữ liệu từ file  
“r”  
Tìm file, nếu đã tồn tại thì sẽ bị ghi đè, Ghi dữ liệu vào file  
nếu không thì tạo ra một file mới. Trả  
về NULL nếu bị lỗi khi thực hiện  
“w”  
“a”  
Tìm file, nếu tồn tại thì nạp nội dung  
vào bộ nhớ, con trỏ file trỏ vào ký tự  
cuối cùng. Nếu file chưa tồn tại thì tạo  
file mới. Trả về NULL nếu lỗi khi thực  
hiện  
Ghi thêm dữ liệu mới  
vào cuối file  
6.2 Các chế độ mở File  
Tham số  
Tác dụng  
Khả năng  
Tìm file, nếu có thì nạp vào bộ nhớ Đcọ nội dung , thêm  
“r+”  
trả về con trỏ trỏ vào ký tự đầu tiên,  
ngược lại trả về NULL  
nội dung mới, sửa đổi  
nội dung cũ  
Tìm file, nếu đã tồn tại thì sẽ bị ghi  
đè, nếu không thì tạo ra một file mới. file, đọc lại, sửa đổi nội  
Trả về NULL nếu bị lỗi khi thực hiện dung vừa ghi  
Ghi nội dung mới vòa  
“w+”  
“a+”  
Tìm file, nếu tồn tại thì nạp nội dung Đọc nội dung , thêm  
vào bộ nhớ, con trỏ file trỏ vào ký tự nội dung mới vào cuối  
cuối cùng. Nếu file chưa tồn tại thì  
file (không thể sửa đổi  
tạo file mới. Trả về NULL nếu lỗi khi nội dung )  
thực hiện  
6.3 Đọc ghi File bằng string  
Tải về để xem bản đầy đủ
pdf 32 trang Thùy Anh 26/04/2022 14500
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Phần 6: File", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_phan_6_file.pdf