Đại hc Quc Gia Thành ph H Chí Minh
Trường Đại hc Khoa Hc T Nhiên
Khoa Công Ngh Thông Tin
Hướng dn
THAO TÁC
VI TP TIN TRONG C++
________________________
________________________
Tháng 9/2011
Thao tác vi tp tin
Khoa CNTT | ĐH KHTN TP HCM
Trang 2
1 Phân loi
Tp tin là hình thc lưu tr ph biến trên b nh ph, gm 2 loi:
Tp tin văn bn: tp tin ch lưu tr thun túy văn bn, trong đó các t được biu din
bng mã ASCII ca, người dùng có th đọc được.
o Tính cht
D truy xut và x
Độ bo mt kém
Tc đ truy xut kém
ch thước ln
o Ví d: Lưu s nguyên 12345 dng binary (2 byte) và dng chui (5 byte)
o c dng thường gp
Tp tin cu hình: *.INI, *.CFG
*.TXT, *.HTML, *.XML
Tp tin nh phân: tp tin cha d liu mà có ít nht mt vài chui bit không th biu din
dng văn bn trơn. Do đó tp tin này ch có máy đọc được, còn người không đọc được.
o Tính cht
Truy xut và x lý phc tp
Tc đ truy xut nhanh
Tính bo mt cao hơn
o c dng thường gp
c tp tin có cu trúc t định nghĩa
*.DOC, *XLS, *.PDF, *.PPT…
*.JPG, *.PCX, *.BMP, *.TIF…
*.MP3, *.WAV, *.AVI
2 Mt s hàm thao tác tp tin vi C++
Nhiu b thư vin cung cp mt tp các hàm thao tác vi tp tin vi C++. đây gii thiu 2 cách
ph dng:
Tp hàm trong cstdio (stdio.h)
Tp hàm trong namespace std
2.1 S dng cstdio (stdio.h)
2.1.1 Mt s hàm x lý chung
n hàm
Chc năng
fopen
M tp tin
fclose
Đóng tp tin
fcloseall
Đóng tt c tp tin
fflush
Làm schng đệm ca mt tp tin đang m
fflushall
Làm sch vùng đệm ca tt c
remove/unlink
Xóa tp tin
feof
Kim tra xem đã đọc đến cui tp tin
Thao tác vi tp tin
Khoa CNTT | ĐH KHTN TP HCM
Trang 3
2.1.2 Mt s hàm x lý cho tp tin văn bn
n hàm
Chc năng
fprintf
Ghi giá tr dng text lên tp tin
fscanf
Đọc giá tr dng text t tp tin
putc/fputc
Ghi lên tp tin mt kí t (s dng tp tin văn bn hoc nh phân có khác bit )
getc/fgetc
Đọc t tp tin mt kí t (s dng tp tin văn bn hoc nh phân có khác bit)
fputs
Ghi mt chui vào tp tin
fgets
Đọc mt chui t tp tin
2.1.3 Mt s hàm x lý cho tp tin nh phân
n hàm
Chc năng
putw
Ghi mt s nguyên lên tp tin
getw
Đọc mt s nguyên t tp tin
fwrite
Ghi các mu tin (có cu trúc định trước) lên tp tin
fread
Đọc các mu tin (có cu trúc định trước) t tp tin
fseek
Di chuyn con tr đến v trí mong mun
ftell
Cho biết v trí hin ti ca con tr
Chi tiết ca mi hàmth xem t MSDN hoc link sau:
http://www.cplusplus.com/reference/clibrary/cstdio/
2.1.4 d:
Ghi tp tin văn bn
/* 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 vi tp tin
Khoa CNTT | ĐH KHTN TP HCM
Trang 4
Đọc tp tin văn bn
/* 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 tp 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 tp tin nh phân
#include <stdio.h>
#include <stdlib.h>
int main () {
FILE * pFile;
long lSize;
char buffer[255];
Thao tác vi tp 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 dng namespace std
ofstream: class gm các phương thc để ghi tp tin
ifstream: class gm các phương thc để đọc tp tin
fstream: class gôm các phương thc cho c thao tác đọc và ghi tp tin
đây ch gii thiu fstream.
2.2.1 Mt s hàm x lý chung
n phương thc
Chc năng
open
M tp tin
Đóng tp tin
is_open
Kim tra xem tp tin có đang m hay không.
flush
Làm sch vùng đệm ca tp tin đang m
good
Kim tra trng thái ca tp tin có tt để đọc/ghi không
Kim tra xem đã đọc đến cui tp tin chưa
2.2.2 Mt s hàm x lý cho tp tin văn bn
n phương thc
Chc năng
operator >>
Đọc d liu t tp tin
operator <<
Ghi d liu vào tp tin
getline
Đọc mt dòng d liu t tp tin
get
Đọc mt kí t hoc mt chui t tp tin, tùy thuc vào tham s ca phương
thc.
put
Ghi mt kí t xung tp tin
2.2.3 Mt s hàm x lý cho tp tin nh phân
n phương thc
Chc năng
read
Đọc mu tin (theo cu trúc định trước) t tp tin
write
Ghi mu tin (theo cu trúc định trước ) vào tp tin
seekg
Di chuyn con tr file đến v trí xác định
tellp
Cho biết v trí hin ti ca con tr file