Đại học Quốc Gia Thành phố Hồ Chí Minh 
Trường Đại học Khoa Học Tự Nhiên 
Khoa Công Nghệ Thông Tin 
Hướng dẫn 
THAO TÁC 
VỚI TẬP TIN TRONG C++ 
________________________ 
________________________ 
Tháng 9/2011
Thao tác với tập tin 
Khoa CNTT | ĐH KHTN TP HCM Trang 2 
1 Phân loại 
Tập tin là hình thức lưu trữ phổ biến trên bộ nhớ phụ, gồm 2 loại: 
 Tập tin văn bản: là tập tin chỉ lưu trữ thuần túy văn bản, trong đó các kí tự được biểu diễn bằng mã ASCII của nó, người dùng có thể đọc được. 
o Tính chất 
 Dễ truy xuất và xử lý 
 Độ bảo mật kém 
 Tốc độ truy xuất kém 
 Kích thước lớn 
o Ví dụ: Lưu số nguyên 12345 ở dạng binary (2 byte) và dạng chuỗi (5 byte) 
o Các dạng thường gặp 
 Tập tin cấu hình: *.INI, *.CFG 
 *.TXT, *.HTML, *.XML 
 Tập tin nhị phân: là tập tin chứa dữ liệu mà có ít nhất một vài chuỗi bit không thể biểu diễn ở dạng văn bản trơn. Do đó tập tin này chỉ có máy đọc được, còn người không đọc được. 
o Tính chất 
 Truy xuất và xử lý phức tạp 
 Tốc độ truy xuất nhanh 
 Tính bảo mật cao hơn 
o Các dạng thường gặp 
 Các tập tin có cấu trúc tự định nghĩa 
 *.DOC, *XLS, *.PDF, *.PPT… 
 *.JPG, *.PCX, *.BMP, *.TIF… 
 *.MP3, *.WAV, *.AVI… 
2 Một số hàm thao tác tập tin với C++ 
Nhiều bộ thư viện cung cấp một tập các hàm thao tác với tập tin với C++. Ở đây giới thiệu 2 cách phổ dụng: 
 Tập hàm trong cstdio (stdio.h) 
 Tập hàm trong namespace std 
2.1 Sử dụng cstdio (stdio.h) 
2.1.1 Một số hàm xử lý chung Tên hàm Chức năng 
fopen 
Mở tập tin 
fclose 
Đóng tập tin 
fcloseall 
Đóng tất cả tập tin 
fflush 
Làm sạch vùng đệm của một tập tin đang mở 
fflushall 
Làm sạch vùng đệm của tất cả 
remove/unlink 
Xóa tập tin 
feof 
Kiểm tra xem đã đọc đến cuối tập tin
Thao tác với tập tin 
Khoa CNTT | ĐH KHTN TP HCM Trang 3 
2.1.2 Một số hàm xử lý cho tập tin văn bản Tên hàm Chức năng 
fprintf 
Ghi giá trị dạng text lên tập tin 
fscanf 
Đọc giá trị dạng text từ tập tin 
putc/fputc 
Ghi lên tập tin một kí tự (sử dụng tập tin văn bản hoặc nhị phân có khác biệt ) 
getc/fgetc 
Đọc từ tập tin một kí tự (sử dụng tập tin văn bản hoặc nhị phân có khác biệt) 
fputs 
Ghi một chuỗi vào tập tin 
fgets 
Đọc một chuỗi từ tập tin 
2.1.3 Một số hàm xử lý cho tập tin nhị phân Tên hàm Chức năng 
putw 
Ghi một số nguyên lên tập tin 
getw 
Đọc một số nguyên từ tập tin 
fwrite 
Ghi các mẫu tin (có cấu trúc định trước) lên tập tin 
fread 
Đọc các mẫu tin (có cấu trúc định trước) từ tập tin 
fseek 
Di chuyển con trỏ đến vị trí mong muốn 
ftell 
Cho biết vị trí hiện tại của con trỏ 
Chi tiết của mỗi hàm có thể xem từ MSDN hoặc link sau: 
http://www.cplusplus.com/reference/clibrary/cstdio/ 
2.1.4 Ví dụ: 
 Ghi tập tin văn bản 
/* fprintf example */ 
#include <stdio.h> 
int main () 
{ 
FILE * pFile; 
int n; 
char name [100]; 
pFile = fopen ("myfile.txt","w"); 
for (n=0 ; n<3 ; n++) 
{ 
puts ("please, enter a name: "); 
gets (name); 
fprintf (pFile, "Name %d [%-10.10s]n",n,name); 
} 
fclose (pFile); 
return 0; 
}
Thao tác với tập tin 
Khoa CNTT | ĐH KHTN TP HCM Trang 4 
Đọc tập tin văn bản 
/* fscanf example */ 
#include <stdio.h> 
int main () 
{ 
char str [80]; 
float f; 
FILE * pFile; 
pFile = fopen ("myfile.txt","w+"); 
fprintf (pFile, "%f %s", 3.1416, "PI"); 
rewind (pFile); 
fscanf (pFile, "%f", &f); 
fscanf (pFile, "%s", str); 
fclose (pFile); 
printf ("I have read: %f and %s n",f,str); 
return 0; 
} 
 Ghi tập tin nhị phân 
#include <stdio.h> 
int main () 
{ 
FILE * pFile; 
char buffer[] = { 'x' , 'y' , 'z' }; 
pFile = fopen ( "myfile.bin" , "wb" ); 
fwrite (buffer , 1 , sizeof(buffer) , pFile ); 
fclose (pFile); 
return 0; 
} 
 Đọc tập tin nhị phân 
#include <stdio.h> 
#include <stdlib.h> 
int main () { 
FILE * pFile; 
long lSize; 
char buffer[255];
Thao tác với tập tin 
Khoa CNTT | ĐH KHTN TP HCM Trang 5 
pFile = fopen ( "myfile.bin" , "rb" ); 
if (pFile==NULL) {fputs ("File error",stderr); return;} 
// copy the file into the buffer: 
result = fread (buffer,1,255,pFile); 
if (result != lSize) {fputs ("Reading error",stderr); return;} 
fclose (pFile); 
return 0; 
} 
2.2 Sử dụng namespace std 
 ofstream: class gồm các phương thức để ghi tập tin 
 ifstream: class gồm các phương thức để đọc tập tin 
 fstream: class gôm các phương thức cho cả thao tác đọc và ghi tập tin 
Ở đây chỉ giới thiệu fstream. 
2.2.1 Một số hàm xử lý chung Tên phương thức Chức năng 
open 
Mở tập tin 
close 
Đóng tập tin 
is_open 
Kiểm tra xem tập tin có đang mở hay không. 
flush 
Làm sạch vùng đệm của tập tin đang mở 
good 
Kiểm tra trạng thái của tập tin có tốt để đọc/ghi không 
eof 
Kiểm tra xem đã đọc đến cuối tập tin chưa 
2.2.2 Một số hàm xử lý cho tập tin văn bản Tên phương thức Chức năng 
operator >> 
Đọc dữ liệu từ tập tin 
operator << 
Ghi dữ liệu vào tập tin 
getline 
Đọc một dòng dữ liệu từ tập tin 
get 
Đọc một kí tự hoặc một chuỗi từ tập tin, tùy thuộc vào tham số của phương thức. 
put 
Ghi một kí tự xuống tập tin 
2.2.3 Một số hàm xử lý cho tập tin nhị phân Tên phương thức Chức năng 
read 
Đọc mẫu tin (theo cấu trúc định trước) từ tập tin 
write 
Ghi mẫu tin (theo cấu trúc định trước ) vào tập tin 
seekg 
Di chuyển con trỏ file đến vị trí xác định 
tellp 
Cho biết vị trí hiện tại của con trỏ file
Thao tác với tập tin 
Khoa CNTT | ĐH KHTN TP HCM Trang 6 
Chi tiết của mỗi hàm có thể tham khảo trên MSDN hoặc link sau: 
http://www.cplusplus.com/reference/iostream/fstream/ 
2.2.4 Ví dụ: 
 Ghi tập tin văn bản 
#include <iostream> 
#include <fstream> 
using namespace std; 
int main () { 
ofstream myfile; 
myfile.open ("example.txt"); 
myfile << "Writing this to a file.n"; 
myfile.close(); 
return 0; 
} 
 Đọc tập tin văn bản 
#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 
int main () { 
string line; 
ifstream myfile ("example.txt"); 
if (myfile.is_open()) 
{ 
while ( myfile.good() ) 
{ 
myfile >> line; 
cout << line << endl; 
} 
myfile.close(); 
} 
else cout << "Unable to open file"; 
return 0; 
} 
 Ghi tập tin nhị phân 
#include <fstream>
Thao tác với tập tin 
Khoa CNTT | ĐH KHTN TP HCM Trang 7 
using namespace std; 
int main () 
{ 
ifstream file ("example.bin", ios::out|ios::binary|ios::ate); 
char buffer[] = { 'x' , 'y' , 'z' }; 
if(file.is_open()) 
file.write(buffer , sizeof(buffer) ); 
file.close(); 
return 0; 
} 
 Đọc tập tin nhị phân 
// Đọc toàn bộ nội dung của tập tin 
#include <iostream> 
#include <fstream> 
using namespace std; 
ifstream::pos_type size; 
char * memblock; 
int main () { 
ifstream file ("example.bin", ios::in|ios::binary|ios::ate); 
if (file.is_open()) 
{ 
size = file.tellg(); 
memblock = new char [size]; 
file.seekg (0, ios::beg); 
file.read (memblock, size); 
file.close(); 
cout << "the complete file content is in memory"; 
delete[] memblock; 
} 
else cout << "Unable to open file"; 
return 0; 
}

More Related Content

PDF
nhập xuất file 2 c++
PPT
Bai giang tin hoc lop 11 bai 14 15
PPT
Bài 14-15 -Lớp 11: Thao tác với tệp
PDF
File
PPTX
Bài 14 - 15: Kiểu dữ liệu tệp. Thao tác với tệp
PDF
Sinh vienit.net --01 - on tap xu ly file - c++-2
PPT
Bai17 kieu du lieu tep va thao tac voi tep-tin 11
nhập xuất file 2 c++
Bai giang tin hoc lop 11 bai 14 15
Bài 14-15 -Lớp 11: Thao tác với tệp
File
Bài 14 - 15: Kiểu dữ liệu tệp. Thao tác với tệp
Sinh vienit.net --01 - on tap xu ly file - c++-2
Bai17 kieu du lieu tep va thao tac voi tep-tin 11

What's hot (16)

DOCX
Giao an tin hoc 11 - Tuan 11 - Bai 16 Vi du lam viec voi tep - v02 - vtq ngoc
PPT
Session 21
PPTX
Tin11 chuong 05 bai 15
PDF
209 008 ky thuat truy xuat file ini
PPTX
Inter process-pipe
DOCX
Giao an tin hoc 11 - Tuan 10 - Bai 14 - 15 Tep va thao tac voi tep - v04 - vt...
PDF
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
PDF
10 back
PPT
Chuong 03 he_thong_file
DOCX
20 lenh linux
PDF
Bảng tra cứu các lệnh cơ bản của unix và linux sưu tầm bởi www.vilinux.com
PPTX
PDF
Linux và mã nguồn mở
DOCX
Command line in linux
PDF
Dsfont help
PDF
Thuc hanh 13
Giao an tin hoc 11 - Tuan 11 - Bai 16 Vi du lam viec voi tep - v02 - vtq ngoc
Session 21
Tin11 chuong 05 bai 15
209 008 ky thuat truy xuat file ini
Inter process-pipe
Giao an tin hoc 11 - Tuan 10 - Bai 14 - 15 Tep va thao tac voi tep - v04 - vt...
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
10 back
Chuong 03 he_thong_file
20 lenh linux
Bảng tra cứu các lệnh cơ bản của unix và linux sưu tầm bởi www.vilinux.com
Linux và mã nguồn mở
Command line in linux
Dsfont help
Thuc hanh 13
Ad

Viewers also liked (20)

PDF
Tut6 solution
PDF
Tut4 solution
DOCX
Hướng dẫn làm bt về chuỗi.doc
PDF
Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules
DOCX
Cam bien gia toc
PDF
Bai tap c
DOC
Lenh tat auto_cad hk3
PDF
Bài giảng ngôn ngữ lập trình c++ chương 7 ra vào dữ liệu tài liệu, ebook, ...
PDF
Lect09 string
PPT
Chapter07 io
PDF
Chuong 05
PDF
PDF
Lect05 array
PDF
Phan 2 chuong 9 (cau truc)
PDF
Phan 2 chuong 8 (chuoi ky tu)
PDF
PDF
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trình
PDF
Ktlt lab full
Tut6 solution
Tut4 solution
Hướng dẫn làm bt về chuỗi.doc
Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules
Cam bien gia toc
Bai tap c
Lenh tat auto_cad hk3
Bài giảng ngôn ngữ lập trình c++ chương 7 ra vào dữ liệu tài liệu, ebook, ...
Lect09 string
Chapter07 io
Chuong 05
Lect05 array
Phan 2 chuong 9 (cau truc)
Phan 2 chuong 8 (chuoi ky tu)
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trình
Ktlt lab full
Ad

Similar to Huong dan thao_tac_file (20)

PDF
Phan 2 chuong 10 (tap tin)
PDF
Phầniiiiiii BÁCH KHOA HÀ NỘI II.8 File.pdf
PPT
Session 21
PDF
Chuong3
PPT
IO trong Java
PPT
Io trong java
PDF
6 - Lập trình C++ cơ bản_print.pdf
DOCX
Bài 70. Đọc ghi file trong C Bài 70. Đọc ghi file trong C
PDF
Bai07xulynhapxuat 130622092548-phpapp02
PPT
2. He thong file.ppt - file sytstem he dieu hanh
PDF
FILE_20210110_210013_bosung-vao-ra-file.pdf
PDF
PPTX
Tpvthaotcvitp 111021042413-phpapp02
PDF
Chuong2
PDF
File trong c_
PDF
Thu vien lap trinh c++
PDF
Cac ham trong thu vien cua c&c++
PDF
Os lab2
PDF
Lap trinh c_tu_co_ban_den_nang_cao
PDF
Lap trinh c_tu_co_ban_den_nang_cao
Phan 2 chuong 10 (tap tin)
Phầniiiiiii BÁCH KHOA HÀ NỘI II.8 File.pdf
Session 21
Chuong3
IO trong Java
Io trong java
6 - Lập trình C++ cơ bản_print.pdf
Bài 70. Đọc ghi file trong C Bài 70. Đọc ghi file trong C
Bai07xulynhapxuat 130622092548-phpapp02
2. He thong file.ppt - file sytstem he dieu hanh
FILE_20210110_210013_bosung-vao-ra-file.pdf
Tpvthaotcvitp 111021042413-phpapp02
Chuong2
File trong c_
Thu vien lap trinh c++
Cac ham trong thu vien cua c&c++
Os lab2
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao

More from Trần Văn Nam (8)

PDF
Tut5 solution
PDF
Stl string
PDF
PPT
Bg chuong trinh dich chuong 3
DOCX
Bai de quy
PDF
C++ 2011 april_draft
PDF
Tailieuvkt hk3
DOCX
Nhung ad
Tut5 solution
Stl string
Bg chuong trinh dich chuong 3
Bai de quy
C++ 2011 april_draft
Tailieuvkt hk3
Nhung ad

Huong dan thao_tac_file

  • 1. Đại học Quốc Gia Thành phố Hồ Chí Minh Trường Đại học Khoa Học Tự Nhiên Khoa Công Nghệ Thông Tin Hướng dẫn THAO TÁC VỚI TẬP TIN TRONG C++ ________________________ ________________________ Tháng 9/2011
  • 2. Thao tác với tập tin Khoa CNTT | ĐH KHTN TP HCM Trang 2 1 Phân loại Tập tin là hình thức lưu trữ phổ biến trên bộ nhớ phụ, gồm 2 loại:  Tập tin văn bản: là tập tin chỉ lưu trữ thuần túy văn bản, trong đó các kí tự được biểu diễn bằng mã ASCII của nó, người dùng có thể đọc được. o Tính chất  Dễ truy xuất và xử lý  Độ bảo mật kém  Tốc độ truy xuất kém  Kích thước lớn o Ví dụ: Lưu số nguyên 12345 ở dạng binary (2 byte) và dạng chuỗi (5 byte) o Các dạng thường gặp  Tập tin cấu hình: *.INI, *.CFG  *.TXT, *.HTML, *.XML  Tập tin nhị phân: là tập tin chứa dữ liệu mà có ít nhất một vài chuỗi bit không thể biểu diễn ở dạng văn bản trơn. Do đó tập tin này chỉ có máy đọc được, còn người không đọc được. o Tính chất  Truy xuất và xử lý phức tạp  Tốc độ truy xuất nhanh  Tính bảo mật cao hơn o Các dạng thường gặp  Các tập tin có cấu trúc tự định nghĩa  *.DOC, *XLS, *.PDF, *.PPT…  *.JPG, *.PCX, *.BMP, *.TIF…  *.MP3, *.WAV, *.AVI… 2 Một số hàm thao tác tập tin với C++ Nhiều bộ thư viện cung cấp một tập các hàm thao tác với tập tin với C++. Ở đây giới thiệu 2 cách phổ dụng:  Tập hàm trong cstdio (stdio.h)  Tập hàm trong namespace std 2.1 Sử dụng cstdio (stdio.h) 2.1.1 Một số hàm xử lý chung Tên hàm Chức năng fopen Mở tập tin fclose Đóng tập tin fcloseall Đóng tất cả tập tin fflush Làm sạch vùng đệm của một tập tin đang mở fflushall Làm sạch vùng đệm của tất cả remove/unlink Xóa tập tin feof Kiểm tra xem đã đọc đến cuối tập tin
  • 3. Thao tác với tập tin Khoa CNTT | ĐH KHTN TP HCM Trang 3 2.1.2 Một số hàm xử lý cho tập tin văn bản Tên hàm Chức năng fprintf Ghi giá trị dạng text lên tập tin fscanf Đọc giá trị dạng text từ tập tin putc/fputc Ghi lên tập tin một kí tự (sử dụng tập tin văn bản hoặc nhị phân có khác biệt ) getc/fgetc Đọc từ tập tin một kí tự (sử dụng tập tin văn bản hoặc nhị phân có khác biệt) fputs Ghi một chuỗi vào tập tin fgets Đọc một chuỗi từ tập tin 2.1.3 Một số hàm xử lý cho tập tin nhị phân Tên hàm Chức năng putw Ghi một số nguyên lên tập tin getw Đọc một số nguyên từ tập tin fwrite Ghi các mẫu tin (có cấu trúc định trước) lên tập tin fread Đọc các mẫu tin (có cấu trúc định trước) từ tập tin fseek Di chuyển con trỏ đến vị trí mong muốn ftell Cho biết vị trí hiện tại của con trỏ Chi tiết của mỗi hàm có thể xem từ MSDN hoặc link sau: http://www.cplusplus.com/reference/clibrary/cstdio/ 2.1.4 Ví dụ:  Ghi tập tin văn bản /* fprintf example */ #include <stdio.h> int main () { FILE * pFile; int n; char name [100]; pFile = fopen ("myfile.txt","w"); for (n=0 ; n<3 ; n++) { puts ("please, enter a name: "); gets (name); fprintf (pFile, "Name %d [%-10.10s]n",n,name); } fclose (pFile); return 0; }
  • 4. Thao tác với tập tin Khoa CNTT | ĐH KHTN TP HCM Trang 4 Đọc tập tin văn bản /* fscanf example */ #include <stdio.h> int main () { char str [80]; float f; FILE * pFile; pFile = fopen ("myfile.txt","w+"); fprintf (pFile, "%f %s", 3.1416, "PI"); rewind (pFile); fscanf (pFile, "%f", &f); fscanf (pFile, "%s", str); fclose (pFile); printf ("I have read: %f and %s n",f,str); return 0; }  Ghi tập tin nhị phân #include <stdio.h> int main () { FILE * pFile; char buffer[] = { 'x' , 'y' , 'z' }; pFile = fopen ( "myfile.bin" , "wb" ); fwrite (buffer , 1 , sizeof(buffer) , pFile ); fclose (pFile); return 0; }  Đọc tập tin nhị phân #include <stdio.h> #include <stdlib.h> int main () { FILE * pFile; long lSize; char buffer[255];
  • 5. Thao tác với tập tin Khoa CNTT | ĐH KHTN TP HCM Trang 5 pFile = fopen ( "myfile.bin" , "rb" ); if (pFile==NULL) {fputs ("File error",stderr); return;} // copy the file into the buffer: result = fread (buffer,1,255,pFile); if (result != lSize) {fputs ("Reading error",stderr); return;} fclose (pFile); return 0; } 2.2 Sử dụng namespace std  ofstream: class gồm các phương thức để ghi tập tin  ifstream: class gồm các phương thức để đọc tập tin  fstream: class gôm các phương thức cho cả thao tác đọc và ghi tập tin Ở đây chỉ giới thiệu fstream. 2.2.1 Một số hàm xử lý chung Tên phương thức Chức năng open Mở tập tin close Đóng tập tin is_open Kiểm tra xem tập tin có đang mở hay không. flush Làm sạch vùng đệm của tập tin đang mở good Kiểm tra trạng thái của tập tin có tốt để đọc/ghi không eof Kiểm tra xem đã đọc đến cuối tập tin chưa 2.2.2 Một số hàm xử lý cho tập tin văn bản Tên phương thức Chức năng operator >> Đọc dữ liệu từ tập tin operator << Ghi dữ liệu vào tập tin getline Đọc một dòng dữ liệu từ tập tin get Đọc một kí tự hoặc một chuỗi từ tập tin, tùy thuộc vào tham số của phương thức. put Ghi một kí tự xuống tập tin 2.2.3 Một số hàm xử lý cho tập tin nhị phân Tên phương thức Chức năng read Đọc mẫu tin (theo cấu trúc định trước) từ tập tin write Ghi mẫu tin (theo cấu trúc định trước ) vào tập tin seekg Di chuyển con trỏ file đến vị trí xác định tellp Cho biết vị trí hiện tại của con trỏ file
  • 6. Thao tác với tập tin Khoa CNTT | ĐH KHTN TP HCM Trang 6 Chi tiết của mỗi hàm có thể tham khảo trên MSDN hoặc link sau: http://www.cplusplus.com/reference/iostream/fstream/ 2.2.4 Ví dụ:  Ghi tập tin văn bản #include <iostream> #include <fstream> using namespace std; int main () { ofstream myfile; myfile.open ("example.txt"); myfile << "Writing this to a file.n"; myfile.close(); return 0; }  Đọc tập tin văn bản #include <iostream> #include <fstream> #include <string> using namespace std; int main () { string line; ifstream myfile ("example.txt"); if (myfile.is_open()) { while ( myfile.good() ) { myfile >> line; cout << line << endl; } myfile.close(); } else cout << "Unable to open file"; return 0; }  Ghi tập tin nhị phân #include <fstream>
  • 7. Thao tác với tập tin Khoa CNTT | ĐH KHTN TP HCM Trang 7 using namespace std; int main () { ifstream file ("example.bin", ios::out|ios::binary|ios::ate); char buffer[] = { 'x' , 'y' , 'z' }; if(file.is_open()) file.write(buffer , sizeof(buffer) ); file.close(); return 0; }  Đọc tập tin nhị phân // Đọc toàn bộ nội dung của tập tin #include <iostream> #include <fstream> using namespace std; ifstream::pos_type size; char * memblock; int main () { ifstream file ("example.bin", ios::in|ios::binary|ios::ate); if (file.is_open()) { size = file.tellg(); memblock = new char [size]; file.seekg (0, ios::beg); file.read (memblock, size); file.close(); cout << "the complete file content is in memory"; delete[] memblock; } else cout << "Unable to open file"; return 0; }