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

Làm việc với Tập tin potx

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.34 KB, 32 trang )

28/08/2011
1
GVGD: Trng Phc Hi
Làm vic vi tp tin
28/08/2011
2
2
Ni dung
1. Khái nim tp tin
2. Phân loi tp tin
3. Các bc x lý tp tin
4. Tp tin vn bn
5. Tp tin nh phân
28/08/2011
3
3
 Là đn v lu tr d liu ti b nh ngoài: đa
cng, CD, USB,

 D liu lu tr trong tp tin không b mt đi khi
ngng cung cp ngun đin nên có th đc s
dng lâu dài

 Có th lu tr d liu vi kích thc ln
Tp tin
28/08/2011
4
4
Ni dung
1. Khái nim tp tin
2. Phân loi tp tin


3. Các bc x lý tp tin
4. Tp tin vn bn
5. Tp tin nh phân
28/08/2011
5
5
Phân loi
 Tp tin vn bn (text file)

 Lu tr d liu di dng chui các kí t thuc bng mã
ASCII thành các dòng

 Mi dòng kt thúc bng kí t xung dòng ‘\n’

 Tp tin đc kt thúc bi kí t EOF (End Of File)

 Thao tác trên tp tin vn bn là tun t
28/08/2011
6
6
Phân loi
 Tp tin nh phân (binary file)

 Lu tr d liu di dng mã nh phân, chui các byte

 Tp tin đc kt thúc bi kí t EOF (End Of File)

 Thao tác d liu trên tp tin nh phân là ngu nhiên
28/08/2011
7

7
Ni dung
1. Khái nim tp tin
2. Phân loi tp tin
3. Các bc x lý tp tin
4. Tp tin vn bn
5. Tp tin nh phân
28/08/2011
8
8
Các bc x lý tp tin
 Khai báo bin và m tp tin

 Ch đnh loi tp tin (vn bn, nh phân) cn m

 Ch đnh thao tác cn thc hin (đc, ghi, thêm, …)

 Thc hin thao tác x lý d liu tng ng vi ch
đ đã m

 óng tp tin

 Th vin cha các thao tác x lý:
<stdio.h>

28/08/2011
9
9
Các bc x lý tp tin
 Khai báo con tr tp tin: FILE *<têncontr>;


 X lý tp tin: m và thc hin các thao tác x lý

 óng tp tin:
fclose(<têncontr>);


void main()
{

//khai báo con tr FILE
FILE *f;

//các thao tác x lý
fclose(f);
}
28/08/2011
10
10
Các hàm x lý tp tin
 M tp tin

 Cú pháp: fopen(char *đng_dn, char *kiu_m)

 Công dng: m tp tin vi đng dn và kiu m đc cho
 Kiu m (đc, ghi, thêm) tp tin (vn bn, nh phân) là
chui kt hp t các chui đc cho trong 2 bng sau


Kiu

Ý ngha
r

M
đ đc (tp tin phi tn ti)
w

M
đ ghi (nu tn ti thì ghi đè)
a

M
đ thêm (cha có thì to
mi)
r+

M
đ đc và ghi
w+

To
mi đ đc và ghi
a+

Thêm
hoc to mi đ đc và ghi

Loi

Ý ngha

t
Tp
tin vn bn

b

Tp
tin nh
phân
28/08/2011
11
11
Các hàm x lý tp tin
 Ví d m tp tin vn bn text.txt đ ghi

#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;

void main()
{
FILE *f = fopen(
"text.txt", "wt");

if (f != NULL)
{
cout<<
"mo file thanh cong";
fclose(f);

}

else cout<<"khong mo duoc file";
}

28/08/2011
12
12
Các hàm x lý tp tin
 Ví d m tp tin nh phân data.dat đ đc

#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;

void main()
{
FILE *f = fopen(
"data.dat", "rb");

if (f != NULL)
{
cout<<
"mo file thanh cong";
fclose(f);
}

else cout<<"khong mo duoc file";
}


28/08/2011
13
13
Các hàm x lý tp tin
 óng tp tin:
 óng 1 tp tin đc ch đnh: int fclose(FILE *f)

 óng tt c tp tin đang m: int fcloseall()

 Công dng
 óng tp tin sau khi kt thúc các thao tác x lý
 Khi ghi, d liu vùng đm s đc ghi xung tp tin
 Khi đc, d liu vùng đm s b xoá
 Gii phóng bin tr tp.
 Nu thành công, tr v 0 (đi vi fclose) và s tp tin
đc đóng (đi vi fcloseall), ngc li tr v EOF.

28/08/2011
14
14
Các hàm x lý tp tin
 Kim tra đc đn cui tp tin
 Cú pháp: int feof(FILE *f)

 Công dng: kim tra con tr f đã đc đn cui tp tin

 Tr v 0 nu cha đn đn cui

 Ngc li tr v giá tr khác 0



while (!feof(f))
{

//các thao tác x lý
}
28/08/2011
15
15
Ni dung
1. Khái nim tp tin
2. Phân loi tp tin
3. Các bc x lý tp tin
4. Tp tin vn bn
5. Tp tin nh phân
28/08/2011
16
16
Tp tin vn bn
 Tp tin vn bn lu d liu là các kí t ca bng
mã ASCII

 Tp tin vn bn có th đc xem bng chng
trình Notepad, lnh type trong DOS, …

 Câu lnh m tp tin vn bn
FILE *f = fopen("filename", "?t");

 filename: là tên tp tin có ch đnh đng dn.


 ? là thao tác đc/ghi d liu tng ng: đc (r), ghi (w),
thêm (a), r+, w+, a+

28/08/2011
17
17
Ghi d liu lên tp tin vn bn
 Ghi mt kí t:
 Cú pháp: int fputc(int chr, FILE *f)
 chr: là mã ASCII ca kí t đc ghi lên tp tin f.

 Công dng: ghi kí t chr lên tp tin f
 Nu thành công thì tr v kí t ghi đc

 Tr v EOF (End Of File) nu gp li


FILE *f = fopen("test.txt", "wt");

for (char c = 'A'; c <= 'Z'; c++)
fputc(c, f);
fclose(f);


28/08/2011
18
18
Ghi d liu lên tp tin vn bn
 Hàm ghi chui

 Cú pháp: int fputs(const char *buff, FILE *f)

 Công dng: ghi chui trong buff lên tp tin f
 Nu thành công tr v giá tr không âm

 Ngc li tr v EOF


FILE *f = fopen("test.txt", "wt");

char *s = "Mua xuan em di hai hoa";
fputs(s, f);
fclose(f);

28/08/2011
19
19
Ghi d liu lên tp tin vn bn
 Hàm ghi chui (có đnh dng):
 Cú pháp:
int fprintf(FILE *f, const char *format, )

 Công dng: ghi chui vi đnh dng đc ch đnh trong
format lên tp tin
 Tr v tng s kí t ghi đc nu thành công

 Ngc li tr v giá tr âm


FILE *f = fopen("test.txt", "wt");


char *s = "bao gio cho den thang";

int t = 10;
fprintf(f,
"%s %d", s, t);
fclose(f);

28/08/2011
20
20
Ghi d liu lên tp tin vn bn
 Bng chui đnh dng cho hàm fprintf ng vi các
kiu d liu:
nh dng

Ý ngha
%d

Xut giá tr bin kiu int

%ld

Xut giá
tr bin kiu long
%.[a]f

Xut giá
tr bin kiu s thc vi a là s
ch s thp phân.


%o

Xut s
nguyên sang h bát phân
%x

Xut s
nguyên sang h thp lc phân
%c

Xut kí
t
%s

Xut chui
kí t
28/08/2011
21
21
 c mt kí t
 Cú pháp: int fgetc(FILE *f)

 Công dng: đc 1 kí t t tp tin f
 Tr v kí t đc đc nu thc thi thành công

 Ngc li tr v EOF hoc li tng ng


Ví d minh ha xut toàn b ni dung tp tin ra màn hình

FILE *f = fopen("test.txt", "rt");

while (!feof(f))
{

char c = fgetc(f);
cout<<c;
}
fclose(f);
c d liu t tp tin vn bn
28/08/2011
22
22
 Hàm đc chui
 Cú pháp: int fgets(char *buf, int n, FILE *f)

 Công dng: đc đúng n - 1 kí t hoc cho đn khi gp kí t
xung dòng hay cui tp tin
f


FILE *f = fopen("test.txt", "rt");

char str[11];
fgets(str, 11, f);
cout<<str;
fclose(f);
c d liu t tp tin vn bn
28/08/2011
23

23
 Hàm đc chui (có đnh dng)
 Cú pháp
int fscanf(FILE *f, const char *format, )

 Công dng: đc d liu và lu vào danh sách bin theo
đnh dng (ging fprintf), d liu không cha khong trng




FILE *f = fopen("test.txt", "rt");

char name[50];

int d, m, y;
fscanf(f,
"%s%d%d%d", name, &d, &m, &y);
cout<<name<<
"\n"<<d<<" "<<m<<" "<<y;
fclose(f);

c d liu t tp tin vn bn
Quyen
1 2 1987
28/08/2011
24
24
Ni dung
1. Khái nim tp tin

2. Phân loi tp tin
3. Các bc x lý tp tin
4. Tp tin vn bn
5. Tp tin nh phân
28/08/2011
25
25
 c mã hóa và lu tr di dng các byte d liu

 D liu tp tin nh phân đc truy xut ngu nhiên

 Phi bit đc cu trúc ca tp tin nh phân mi có
th đc đc d liu

 Lnh m tp tin nh phân
FILE *f = fopen("path", "?b");

 filename: tên tp tin có ch đnh đng dn

 ? (r, w, a) tng ng thao tác đc, ghi, thêm d liu lên
tp tin
Tp tin nh phân

×