You are on page 1of 31

CHNG 9:

LM VIC VI TP TIN -
FILE

1 12/7/2017
I. Gii thiu

File l cch cho php lu tr d liu tn


ti mi
Mt in hoc chy li chng trnh d
liu vn cn
Phn loi file:
File vn bn
File nh phn

2 12/7/2017 Ths. Trnh Th Xun


File vn bn

ltp tin dng ghi cc k t ln a theo


cc dng
m file ra xem ni dung trc tip c

3 12/7/2017 Ths. Trnh Th Xun


File nh phn

l tp tin dng ghi cc cu trc di


dng nh phn c m ha
m file ra khng xem c ni dung trc
tip

4 12/7/2017 Ths. Trnh Th Xun


Quy trnh x l File

5 12/7/2017 Ths. Trnh Th Xun


Hnh minh ha x l nhp/xut

7
1. Khai bo con tr tp tin

C php:
FILE *tn-bin;

V d:
FILE *f;

Lu : Th vin x l tp l stdio.h

8 12/7/2017 Ths. Trnh Th Xun


2. M tp tin

C php:
con_tr = fopen( ng dn tp tin, <kiu truy cp>);

Trong :
ng dn tp tin: l ng dn n tp tin cn m
tp tin phi tn ti trong my
kiu truy cp: nhm xc nh tp c m s c d
liu (read - r) hoc ghi d liu (write -w) v d liu l
text (text - t) hay nh phn (birnary - b).

VD:

f = fopen(C:\VD1.txt, rt);

9 12/7/2017 Ths. Trnh Th Xun


V d

f = fopen(C:\VD1.txt, rt);

r (read): m c
t (text): m file dng text

f = fopen(C:\VD1.txt, wb);

w (write): m ghi
b (birnary): m file dng
Sau khi m tp: nh phn
-M thnh cng con tr tp c gi
tr khc NULL
-M khng thnh cng con tr tp
c gi tr l NULL

10
VD: m tp v kim tra s thnh cng sau khi m

FILE *fp;
fp = fopen (SINHVIEN.TXT, rt);
if ( fp == NULL )
{
printf(Khong mo duoc tap tin.);
}
else
{
printf(Da mo duoc tap tin.);
}

11
3. Hm x l vi tp tin vn bn

a. c d liu t tp
fscanf(con tr tp, nh dng, tham bin)
c d liu t tp tin theo nh dng xc nh v lu vo
bin
fscanf( f, %d, &x)
fgets(vng nh, kch thc, FILE *f)
c mt chui k t t mt tp tin vi kch thc ti a
cho php, hoc gp k t xung dng
fgets( s, 80, f)
fgetc( FILE *f)
c tng k t t tp tin ang m
c = fgetc(f );

12 12/7/2017 Ths. Trnh Th Xun


V d:

Cho file d liu gm 3 dng:


Dao Thi Lan
21
7.5
N
Mun c ni dung trn s dng cc lnh:
fgets(ht, 80, f); // c chui Dao Thi Lan
fscanf(f, %d, &tuoi); // c s 21
fscanf(f, %f, &dtb); //c s 7.5
fgetc(f) ; // c k t xung dng sau s khi c s v chui
fgets(gt, 80, f) // c chui N

13
b. Ghi d liu vo tp

fprintf( con tr tp, nh dng, bin)


ghi d liu t tham bin theo mt nh dng
tp tin
fprintf (f, %d, x)

fputs( chui k t, con tr tp)


ghi mt chui k t vo tp tin ang m
fputs(Giao trinh bai tap, f);

fputc( k t, con tr tp)


Ghimt k t vo tp tin
Fputc(A, f);
14 12/7/2017 Ths. Trnh Th Xun
4. Hm x l vi tp tin nh phn

a. c d liu t File
fread(void *ptr, int size, int n, FILE *f)
ptr: vng nh lu d liu c.
size: kch thc mi nh (tnh bng byte).
n: di d liu cn c, s mu tin c c
f: c t tp tin nh phn no.

V du:
int a[30], b, n;
fread(a, sizeof(int), n , f);
fread(&b, sizeof(int), 1 , f);

15 12/7/2017 Ths. Trnh Th Xun


b) Ghi d liu vo tp

fwrite(void*ptr, int size, int n, FILE *f)


Kt qu ca hm bng s mu tin c ghi
tht s.
ptr: con tr ch ti vng nh cha d liu cn ghi;
size: Kch thc ca mt mu tin (tnh theo byte);
n: S mu tin cn ghi.
f: tp tin ghi

V d:
inta[20];
fwrite(a, sizeof(int), n , f);

16
5. Mt s hm x l khc

fclose(FILE *f): ng tp f
fseek( FILE *f, < di>, <mc>)
Di chuyn con tr tp tin
Cc mc gm:
SEEK_SET: di t u tp tin
SEEK_END: di t cui tp tin
SEEK_CUR: di t v tr hin hnh
di :
>0 ri v sau
<0 ri v trc
=0 t v tr mc
V d:
fseek( f, +5, SEEK_CUR)
17
Bi tp p dng 1 (file nh phn)

Vit chng trnh thc hin cc yu cu (mi


yu cu xy dng di dng mt hm):
o Nhp DSSV t bn phm, vi mi sinh vin
gm: m sinh vin, h tn, im trung bnh, hc
bng
o In DSSV c ra mn hnh
o Ghi li danh sch sinh vin vo tp c tn l
SV1.DAT
o c li DSSV t tp vo mng

p dng ln lt cc yu cu trn
18
Cc bc gii quyt bi ton

Khai bo cu trc SINH VIN gm cc thng tin theo yu


cu
Vit hm nhp DS gm n sinh vin
void nhapDSSV(SV ds[], int &n)
Vit hm in DS SV ln mn hnh

void inDSSV(SV ds[], int n)


Vit hm ghi d liu t mng vo file

void ghiFile(FILE *f, SV ds[], int n)


Vit hm c t tp vo mng
void docFile(FILE *f, SV ds[], int &n)
Vit hm main() gi thc thi cc hm va vit.

19
V d
void nhapDSSV(SV ds[ ],int &n)
#include <conio.h> {
int i;
#include <stdio.h>
SV x;
struct SV printf("\n Nhap so sinh vien:");
{ scanf("%d", &n);
for(i=0; i<n; i++)
int msv;
{
char hoten[20]; printf("\nNhap thong tin sinh vien thu %d:",i);
float dtb; printf("\nMSV:"); scanf("%d",&x.msv);
printf("Ho ten:");
float hb; fflush(stdin); gets(x.hoten);
}; printf("DTB:");
scanf("%f",&x.dtb);
printf("Hoc bong:");
scanf("%f", &x.hb);
ds[i] = x;
}
}
V d (tip)

void inDSSV(SV ds[ ], int n)


{
int i;
for(i=0; i<n; i++)
{
printf("\n%5d",ds[i].msv);
printf(%20s, ds[i].hoten);
printf(%6.2f%, ds[i].dtb);
printf(%6.2f%, ds[i].hb);
}
}

21
V d (tip)

void ghiFile(FILE *f, SV ds[], int n)


{
int i;
SV x;
f=fopen("SV1.TXT","wb");
fwrite(&n,sizeof(int),1,f);
for(i=0; i<n; i++)
fwrite(&ds[i], sizeof(ds[i]), 1,f);

fclose(f);
}
22
V d (tip)

void docFile(FILE *f, SV ds[], int &n)


{
int i;
SV x;
f=fopen("SV1.TXT","rb");
fread(&n, sizeof(int),1,f);
for(i=0;i<n;i++)
{
fread(&x, sizeof(x),1,f);
ds[i] = x;
}
fclose(f);
}

23
V d (tip)

int main()
{
int n;
SV ds[10];
FILE *f;
nhapDSSV(ds,n);
printf("\n DS SV da nhap \n");
inDSSV(ds,n);
ghiFile(f,ds,n);
docFile(f,ds,n);
printf("\n DS SV doc tu file \n");
inDSSV(ds,n);
getch();
}
24
Bi tp p dng 1 (file vn bn)

Vit chng trnh thc hin cc yu cu (mi


yu cu xy dng di dng mt hm):
o Nhp DSHH t bn phm, vi mi hng ha
gm: m hng ha, tn hng ha, s lng,
n gi
o In DSHH c ra mn hnh
o Ghi li danh sch hng ha vo tp c tn l
HH.txt
o c li DSHH t tp vo mng

p dng ln lt cc yu cu trn
25
Cc bc gii quyt bi ton

Khai bo cu trc HNG HA gm cc thng tin theo yu


cu
Vit hm nhp DS gm n hng ha
void nhapDSHH( HH ds[ ], int &n)
Vit hm in DS HH ln mn hnh

void inDSHH( HH ds[ ], int n)


Vit hm ghi d liu t mng vo file

void luuFile(FILE *f, HH ds[ ], int n)


Vit hm c t tp vo mng
void docFile(FILE *f, HH ds[ ], int &n)
Vit hm main() gi thc thi cc hm va vit.

26
#include
struct HH
{
int mhh;
char tenH[20];
float SL;
float DG;
};

27
void nhapDSHH ( HH ds[], int &n )
{
int i;
HH x;
printf("\n Nhap so Hang hoa:");
scanf("%d", &n);
for( i=0; i<n; i++)
{
printf("\nNhap thong tin hang hoa thu %d:",i);
printf("\nMa HH:"); scanf("%d",&x.mhh);
printf("Ten hang:");
fflush(stdin); gets(x.tenH);
printf("SL:");
scanf("%f",&x.SL);
printf("Don Gia:");
scanf("%f", &x.DG);
ds[i] = x;
}
}

28
//in danh sach sinh vien tu mang ra man hinh
void inDSHH ( HH ds[], int n)
{
int i;
for( i = 0; i<n; i++)
printf("\n%5d%20s%6.2f%10.2f", ds[i].mhh, ds[i].tenH, ds[i].SL, ds[i].DG);
}

29
//Lu d liu vo file
void luuFile (FILE *f, HH ds[], int &n )
{
int i;
f = fopen("dshanghoa.txt","wt");
fprintf( f, "%d", n);
for( i=0; i<n; i++)
fprintf(f,"\n%5d%20s%6.2f%10.2f",ds[i].mhh,ds[i].tenH,ds[i].SL,ds[i].DG);
fclose(f);
}

30
void docFile ( FILE *f, HH ds[], int &n)
{
int i;
HH x;
f = fopen("dshanghoa.txt","rt");
fscanf( f, "%d", &n);
for(i=0;i<n;i++)
{
fscanf(f, "%d", &x.mhh);
fgets(x.tenH, 20+1, f);
//fgetc(f); fgets(x.tenH, 20, f);
fscanf(f, "%f%f", &x.SL, &x.DG);
ds[i] = x;
}
fclose(f);
}
31
int main( )
{
int i,x,n;
HH ds[10];
FILE *f;
nhapDSHH(ds,n);
printf("\n DS HH da nhap \n");
inDSHH(ds,n);
luuFile(f,ds,n);
docFile(f,ds,n);
printf("\n DS doc tu file \n");
inDSHH(ds,n);
getch();
}

32

You might also like