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

Dữ liệu kiểu tập tin

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 (95.57 KB, 9 trang )

Chỉång VIII : Dỉỵ liãûu kiãøu táûp tin (File)


Trang 94
Ch−¬ng VIII.
DỈỴ LIÃÛU KIÃØU TÁÛP TIN (FILE)
I.
Khại niãûm:
Âãø lỉu trỉỵ vénh viãùn dỉỵ liãûu ta phi lỉu trỉỵ lãn thiãút bë nhåï ngoi ca mạy tênh nhỉ âéa,
bàng tỉì,... Khi lỉu nhỉ váûy thç nhọm dỉỵ liãûu âọ gi l táûp tin (file).
File l mäüt kiãøu dỉỵ liãûu cọ cáúu trục, bao gäưm táûp håüp cạc pháưn tỉí dỉỵ liãûu cọ cng kiãøu
âỉåüc nhọm lải våïi nhau tảo thnh mäüt dy. Mäüt file gäưm cạc byte âỉåüc ghi trong cạc bäü nhåï
ngoi (âéa tỉì, bàng tỉì.....). File cọ tãn v âäü di ca nọ chênh bàòng säú byte ca dy.
Mäüt táûp tin báút k cọ thãø âỉåüc áún âënh l táûp tin vàn bn, cng cọ thãø l táûp tin nhë
phán. Viãûc áún âënh nhỉ váûy phủ thüc vo mủc âêch sỉí dủng táûp tin v phủ thüc vo cạch
khai bạo kiãøu truy cáûp khi måí táûp tin.

- Táûp tin dỉỵ liãûu nhë phán : Dỉỵ liãûu trãn file nhë phán giäúng nhỉ åí trong bäü nhåï
- Táûp tin dỉỵ liãûu vàn bn : Khạc våïi file nhë phán khi xỉí lê m chuøn dng :
+ Khi ghi giạ trë LF thç chuøn thnh 2 giạ trë l CR v LF.
+ Khi âc 2 giạ trë CR v LF thç chuøn thnh LF.
Trong âọ CR (m 13) : vãư âáưu dng; LF (m 10) : xúng dng.

Cạc bỉåïc xỉí lê file :
- Khai bạo biãún file FILE *con_tr_file;
- Måí âãø ghi hồûc âc con_tr_file=fopen(tãn_file, kiãøu_xỉí_lê );
- Ghi hồûc âc file
- Âọng file fclose(con_tr_file);
Cọ 5 tãûp chøn : stdin, stdout, stdprn, stderr, stdlog
II.
Cạc hm xỉí lê táûp tin trong C :


II.1.

Cạc hm dng chung cho c 2 kiãøu nhë phán v vàn bn.
• Hm fopen:
Máùu : FILE *fopen(const char *tãn_file,const char *kiãøu_xỉí_lê);
Trong âọ : tãn_file: l âỉåìng dáùn tåïi file trãn âéa.
kiãøu_xỉí_lê : l xáu våïi cạc nghéa sau :
Kiãøu
Âäúi våïi táûp
tin vàn bn

Âäúi våïi táûp
tin nhë phán

nghéa
“r” “rt” “rb” Måí file â täưn tải âãø âc, nãúu khäng tr vãư läùi
“w” “wt” “wb” Måí file måïi âãø ghi, nãúu file â täưn tải nọ s bë xọa
“a” “at” “ab” Måí file âãø ghi bäø sung, nãúu chỉa täưn tải thç tảo file måïi
“r+” “r+t” “r+b” Måí file âãø âc/ghi, nãúu file khäng täưn tải s bạo läùi
“w+” “w+t” “w+b” Måí file måïi âãø âc/ghi, nãúu â täưn tải nọ s bë xọa
“a+” “a+t” “a+b” Måí file âãø âc/ghi bäø sung, nãúu chỉa täưn tải thç tảo file måïi
Chỉång VIII : Dỉỵ liãûu kiãøu táûp tin (File)


Trang 95
Cäng dủng: dng âãø måí táûp tin, nãúu thnh cäng s tr vãư con tr kiãøu FILE ỉïng våïi táûp
tin vỉìa måí, nãúu cọ läùi tr vãư NULL.
Chụ : Trong cạc kiãøu âc ghi, cáưn lm sảch vng âãûm trỉåïc khi chuøn tỉì âc sang
ghi hồûc ghi sang âc nhåì hm fflush hồûc hm dëch chuøn vë trê con tr.
• Hm fclose:

Máùu : int fclose(FILE *tãn_tr_file);
Trong âọ : tãn_tr_file l con tr tỉång ỉïng våïi táûp tin cáưn âọng.
Cäng dủng : dng âãø âọng táûp tin, bao gäưm cạc cäng viãûc :
- Âáøy dỉỵ liãûu cn trong vng âãûm lãn âéa (khi ghi)
- Xọa vng âãûm (khi âc)
- Gii phọng biãún tãn_tr_file, nãúu thnh cäng tr vãư giạ trë 0, nãúu khäng : EOF
• Hm fcloseall:
Máùu : int fcloseall(void);
Cäng dủng : âọng táút c cạc táûp tin âang måí, nãúu thnh cäng tr vãư giạ trë bàòng säú táûp
tin âọng âỉåüc, nãúu khäng tr vãư giạ trë EOF.
• Hm fflush:
Máùu : int fflush(FILE * tãn_tr_file);
Trong âọ : tãn_tr_file l con tr tỉång ỉïng våïi táûp tin âang xỉí lê.
Cäng dủng : lm sảch vng âãûm ca táûp tin, nãúu thnh cäng tr vãư giạ trë 0, nãúu khäng
tr vãư EOF
• Hm fflushall:
Máùu : int fflushall(void);
Cäng dủng : lm sảch táút c vng âãûm ca cạc táûp tin âang måí, nãúu thnh cäng tr vãư
giạ trë bàòng säú táûp tin âỉåüc lm sảch, nãúu khäng tr vãư giạ trë EOF.
• Hm ferror
Máùu : int ferror(FILE * tãn_tr_file);
Trong âọ : tãn_tr_file l con tr tỉång ỉïng våïi táûp tin âang xỉí lê.
Cäng dủng : kiãøm tra läùi thao tạc trãn táûp tin, nãúu khäng cọ läùi tr vãư giạ trë 0, nãúu cọ
läùi tr vãư giạ trë khạc 0.
• Hm perror:
Máùu : void perror(const char *s);
Trong âọ s l con tr tr tåïi chùi kê tỉû
Cäng dủng : in chùi s v thäng bạo läùi.
• Hm feof:
Máùu : int feof(FILE * tãn_tr_file);

Trong âọ : tãn_tr_file l con tr tỉång ỉïng våïi táûp tin âang xỉí lê.
Cäng dủng : kiãøm tra kãút thục táûp tin, tr vãư giạ trë khạc 0 nãúu gàûp cúi táûp tin khi âc,
nãúu khäng tr vãư giạ trë 0.
• Hm unlink:
Máùu : int unlink(FILE * tãn_tr_file);
Trong âọ : tãn_tr_file l con tr tỉång ỉïng våïi táûp tin cáưn xọa.
Cäng dủng : xọa táûp tin trãn âéa, nãúu thnh cäng tr vãư giạ trë 0, nãúu khäng : EOF
Chổồng VIII : Dổợ lióỷu kióứu tỏỷp tin (File)


Trang 96
Haỡm remove:
Mỏựu : remove(const char * tón_troớ_file);
Trong õoù : tón_troớ_file laỡ con troớ tổồng ổùng vồùi tỏỷp tin cỏửn xoùa.
Cọng duỷng : xoùa tỏỷp tin trón õộa, haỡm naỡy laỡ mọỹt macro goỹi tồùi haỡm unlink.
Caùc haỡm naỡy duỡng cho caớ 2 kióứu nhở phỏn vaỡ vn baớn nhổng coù vaỡi õióứm khaùc nhau.

Haỡm rename:
Mỏựu : rename(const char *f1,const char *f2);
Cọng duỷng : ọứi tón tóỷp f1 thaỡnh tóỷp f2
Haỡm putc vaỡ fputc:
Mỏựu : int putc(int ch, FILE *con_troớ_file);
int fputc(int ch, FILE *con_troớ_file);
trong õoù ch laỡ mọỹt sọỳ nguyón, con_troớ_file laỡ con troớ tổồng ổùng vồùi tỏỷp tin õang xổớ lờ.
Cọng duỷng : ghi lón tỏỷp tin kờ tổỷ coù maợ bũng m=ch%256 (ch õổồỹc xem nhổ khọng
dỏỳu). Nóỳu thaỡnh cọng traớ vóử giaù trở maợ kờ tổỷ õổồỹc ghi, nóỳu khọng traớ vóử giaù trở EOF.
Haỡm getc vaỡ fgetc:
Mỏựu : int getc(FILE *con_troớ_file);
int fgetc(FILE *con_troớ_file);
trong õoù con_troớ_tỏỷp tin laỡ con troớ tổồng ổùng vồùi tỏỷp tin õang xổớ lờ.

Cọng duỷng : õoỹc kờ tổỷ tổỡ tỏỷp tin, nóỳu hóỳt tỏỷp tin thỗ traớ vóử EOF.
II.2.
Caùc haỡm di chuyóứn con troớ chố vở trờ:
Caùc file õang mồớ coù 1 con troớ chố vở trờ (File Position Locator) duỡng õóứ xaùc õởnh vở trờ
õoỹc ghi trón file.
Haỡm rewind:
Mỏựu : rewind(FILE f);
Cọng duỷng : Trồớ vóử õỏửu tóỷp õang mồớ.
Haỡm ftell:
Mỏựu : long ftell(FILE f);
Cọng duỷng : Cho bióỳt vở trờ hióỷn taỷi cuớa con troớ tóỷp (vở trờ tờnh theo byte, bừt õỏửu tổỡ 0,
cho -1L nóỳu coù lọựi)
Haỡm fseek:
Mỏựu : int fseek(f, long n, int xuatphat);
Cọng duỷng : Dởch chuyóứn n byte kóứ tổỡ vở trờ xuỏỳt phaùt (cho khaùc 0 nóỳu coù lọựi)
+ fseek(f,0,SEEK_SET); trồớ vóử õỏửu tóỷp
+ fseek(f,0,SEEK_END); trồớ vóử cuọỳi tóỷp
+ fseek(f,k,SEEK_CUR); dởch chuyóứn k byte kóứ tổỡ vở trờ con troớ hióỷn thồỡi.
II.3.
Caùc haỡm nhỏỷp xuỏỳt kióứu vn baớn:
Haỡm fprintf:
int frintf(FILE *f, const char *õk,dsõs);
Cọng duỷng : Ghi giaù trở danh saùch caùc õọỳi sọỳ (dsõs) lón tóỷp f theo khuọn daỷng õổồỹc
chố õởnh trong chuọựi õióửu khióứn (õk).
Chổồng VIII : Dổợ lióỷu kióứu tỏỷp tin (File)


Trang 97
Haỡm fscanf:
int fscanf(FILE *f, const char *õk, dsõs);

Cọng duỷng : oỹc dổợ lióỷu tổỡ tóỷp f theo khuọn daỷng õổồỹc xaùc õởnh trong chuọựi õióửu
khióứn õk vaỡ kóỳt quaớ õổồỹc lổu vaỡo trong danh saùch caùc õọỳi sọỳ (dsõs).
Haỡm fputs:
int fputs(const char *s, FILE *f);
Trong õoù : s laỡ con troớ troớ õóỳn õởa chố õỏửu cuớa mọỹt chuọựi kyù tổỷ
f laỡ con troớ tóỷp.
Cọng duỷng : Ghi chuọựi s lón tóỷp f (dỏỳu \0 khọng ghi lón tóỷp). Khi thaỡnh cọng haỡm traớ
vóử kyù tổỷ cuọỳi cuỡng õổồỹc ghi lón tóỷp. Khi coù lọựi haỡm cho EOF.
Haỡm fgets:
char *fgets(char *s, int n, FILE *f);
Trong õoù : s laỡ con troớ troớ õóỳn vuỡng nhồù õuớ lồùn õóứ chổùa chuọựi kyù tổỷ õoỹc tổỡ tóỷp
n laỡ õọỹ daỡi cổỷc õaỷi cuớa daợy cỏửn õoỹc
f laỡ con troớ tóỷp.
Cọng duỷng : oỹc daợy kyù tổỷ tổỡ tóỷp f vaỡ chổùa vaỡo vuỡng nhồù s. Khi thaỡnh cọng, haỡm traớ
laỷi õởa chố vuỡng nhỏỷn kóỳt quaớ. Khi coù lọựi hoỷc gỷp cuọỳi tóỷp, haỡm cho giaù trở NULL.
Vờ duỷ : #include <stdio.h>
#include <ctype.h>
void main()
{ FILE *f;
char ch;
f=fopen("a.txt","w");
do
putc(toupper(ch=getchar()),f);
while(ch!='\n');
fclose(f);
}

Vờ duỷ: #include <stdio.h>
#include <ctype.h>
void main()

{ FILE *f;
char ch;
if((f=fopen("a.txt","r"))==NULL)
printf("\nKhong mo duoc file");
else
do
putchar(ch=getc(f));
while(ch!='\n');
fclose(f);
}
Chổồng VIII : Dổợ lióỷu kióứu tỏỷp tin (File)


Trang 98
Vờ duỷ : Vióỳt chổồng trỗnh nhỏỷp theo kióứu vn baớn
#include <stdio.h>
#include <conio.h>
void main()
{ FILE *f;
int i,n;
float a;
f=fopen("a.txt","w");
printf("Nhap n :");scanf("%d",&n);
fprintf(f,"%d\n",n);
for(i=0;i<n;i++)
{ scanf("%f",&a);
fprintf(f,"%f\n",a);
}
fclose(f);
getch();

}

Vờ du:
Vióỳt chổồng trỗnh xuỏỳt theo kióứu vn baớn
#include <stdio.h>
#include <conio.h>
void main()
{ FILE *f;
int i,n;
float a;
f=fopen("a.txt","r");
fscanf(f,"%d",&n);
for(i=0;i<n;i++)
{ fscanf(f,"%f",&a);
printf("\n%f",a);
}
fclose(f);
getch();
}

Vờ duỷ 3:
Mồớ mọỹt tóỷp vn baớn vaỡ in ra tỏửn suỏỳt xuỏỳt hióỷn cuớa baớng chổợ caùi
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <string.h>
#define N 256
void main()

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×