Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Chương 3: Nhập và xuất dữ liệu pptx
Nội dung xem thử
Mô tả chi tiết
CHваNG 3: NH荏P VÀ XU厩T D殴やLI越Uやや
§1. KHÁI NI越M CHUNG
1. Khái ni閲m: Trг艶cや đây chúng taや đã xét vi閲c nh餌p d王やli閲u t旺やbàn phím.
Trong nhi疫u trг薗ng h汚p th襖c t鋭,やđ駅やthu餌n l汚i, chúng ta ph姥i nh餌p d王やli閲u t旺や
các t餌p tin trênやđĩa. Các hàm thгやvi閲n c奥a C cho phép truy c餌p t餌p tin và
chia là 2 c浦p khác nhau:
まやcác hàm c浦p 1 là các hàmや鉛やc浦p th浦p nh浦t, truy c餌p tr襖c ti鋭pやđ鋭n các
t餌p tin trênやđĩa. C không cung c浦p vùng nh艶やđ閲m cho các hàm này
まやcác hàm c浦p 2 là các hàm truy xu浦t t餌p tin cao hбn, do chúngやđг汚c C
cung c浦p vùng nh艶やđ閲m.
や Đ掩i v艶i các hàm c浦p 1, t餌p tinやđг汚c xem là kh掩i các byte liên t凹c doやđó
khi mu掩n truy c餌p m雲u tin c凹やth駅やthì ph姥i tính toánやđ園a ch厭やc奥a m雲u tin và
nhгやv餌y công vi閲c v浦t v姥やhбn. Ngoài ra ph姥i cung c浦p vùng nh艶やđ閲m cho
ki駅uやđ奄c ghi này.やĐ掩i v艶i các hàm c浦p hai công vi閲c nh盈やnhàng hбn do:
まやtrình biên d園ch t襖やđ猿ng cung c浦p vùng kíや応cやđ閲m cho chúng
まや có th駅やtruy xu浦t các m雲u tin mà không g洩p khó khăn nhгやv艶i các
hàm c浦p 1
Trong C, các thông tin c閏n thi鋭t cho các hàm xu浦t nh餌p c浦p 2やđг汚cやđ洩t
trong t餌p tin stdio.h còn các thông tin v疫やhàm nh餌p xu浦t c浦p 1 thìや鉛やtrong
t餌p tin io.h
2. Stream và các t餌p tin: Ta ph姥i phân bi閲t hai thu餌t ng王やlà stream và file.
H閲や th掩ng xu浦t nh餌p c奥a C cung c浦p m猿t không gian tг鉛ng tг汚ng gi王a
ngг薗i l餌p trình và các thi鋭t b園やđг汚c dùng. C浦p trung gian tг鉛ng tг汚ng này
g奄i là stream và thi鋭t b園やc凹やth駅やlà t餌p tin.やや
a. Các streams: Trong máy tính ta dùng 2 lo蔚i stream: văn b姥n và nh園や
phân. M猿t stream văn b姥n là m猿t lo蔚t kí t襖や đг汚c t炎や ch応c thành dòng mà
m煙i dòngやđг汚c k鋭t thúc b影ng kí t襖やxu掩ng dòng newline(“\n”). Khi ghi, m猿t
kí t襖やchuy駅n dòng LF(mã 10)やđгc汚やchuy駅n thành 2 kí t襖やCR( mã 13) và LF.
Khiやđ奄c 2 kí t襖やliên ti鋭p CR và LF trên t餌p tin ch厭やcho ta m猿t kí t襖やLF. M猿t
stream nh園やphân là m猿t lo蔚t các byte.やや
b. Các t餌p tin: Trong C, m猿t t餌p tin là m猿t khái ni閲m logic mà h閲や
th掩ng có th駅や áp d凹ng cho m奄i th応や t旺や các t餌p tin trênや đĩa choや đ鋭n các
terminal.やや Khi b営tやđ閏u th襖c hi閲n chгбng trình, máy tính m鉛や3 stream văn
b姥nやđãやđг汚cやđ園nh nghĩa trг艶c là stdin, stdout và stderr.やĐ掩i v艶i h閏u h鋭t các
h閲やth掩ng, các thi鋭t b園やnày là console.やや
§2. NH荏P XU厩T CHU噂Nやや
27
1. Nh餌p xu浦t kí t襖, chu煙i kí t襖,や đ園nh d蔚ng và b姥n ghi: Nh餌p xu浦t c浦p 2
(nh餌p xu浦t chu云n) cung c浦p 4 cáchやđ奄c và ghi d王やli閲u khác nhau (ngг汚c l蔚i
nh餌p xu浦t câp1 ch厭やdùng 1 trong 4 cách này).やや
Trг艶c h鋭tややd王やli閲u có th駅やđ奄c ghi m煙i l閏n m猿t kí t襖, tгбng t襖やnhгやcáchやや
làm vi閲c c奥a putchar() và getche()やđ駅やđ奄c d王やli閲u t旺やbàn phím và hi駅n th園やlên
màn hình.
Th応やhai, d王やli閲u có th駅やnh餌p xu浦t theo chu煙i b影ng các dùng các hàm
gets() và puts()
Th応やba, d王やli閲u có th駅やđг汚c nh餌p và xu浦t theo khuôn d蔚ng b影ng các
hàm fprintf() và fscanf()
Th応やtг, d王やli閲uやđг汚cやđ奄c và ghi theo kh掩i có chi疫u dài c掩やđ園nh thг薗ng
dùng lгu tr王やm姥ng hay c浦u trúc b影ng các hàm fread() và fwrite(). Tóm l蔚i:
Các hàm dùng chung cho hai ki駅u nh園やphân và văn b姥nやや
fopen : dùng m鉛やt餌p tin
fclose :やđóng t餌p tinやや
fclose :やđóng t浦t c姥やcác t餌p tinやや
fflush : dùng làm s蔚ch vùngやđ閲m c奥a t餌p tin
flushall : dùng làm s蔚ch vùngやđ閲m c奥a t浦t c姥やt餌p tinやや
ferror : cho bi鋭t có l煙i (khác không) hay không có l煙i ( b影ng 0)
perror : thong báo l煙i trên màn hình
foef : cho bi鋭t cu掩i t餌p tin hay chгa
unlink và remove : dùngやđ駅やlo蔚i t餌p tin trênやđĩa
fseek : di chuy駅n con tr延やđ鋭n v園やtrí b浦t kì trên t餌p tinやや
ftell : cho bi鋭t v園やtrí hi閲n t蔚i c奥a con tr延や
Các hàm nh餌p xu浦t kí t襖やや
putc và fputc : nh餌p kí t襖やvào t餌p tin
getc và fgetc :やđ奄c kí t襖やt旺やt餌p tin
fprintf : dùng ghi d王やli閲uやđ園nh d蔚ng lên t餌p tin
fscanf : dùngやđ奄c d王やli閲uやđ園nh d蔚ng t旺やt餌p tinやや
fputs : dùng ghi chu煙i lên t餌p tinやや
fgets : dùngやđ奄c chu煙i t旺やt餌p tin
Các hàm dùng cho ki駅u xu浦t nh餌p nh園やphânやや
putw : dùng ghi m猿t s掩やnguyên hai byte lên t餌p tin
gets : dùngやđ奄c m猿t s掩やnguyên hai byte t旺やt餌p tin
fwrite : dùng ghi m猿t m雲u tin lên t餌p tinやや
fread : dùngやđ奄c m猿t m雲u tin t旺やt餌p tinやや
2. D蔚ng văn b姥n và d蔚ng nh園やphân: Cách khácや đ駅やphân lo蔚i các thao tác
nh餌p xu浦t t餌p tin là nóやđг汚c m鉛やtheo ki駅u văn b姥n hay nh園やphân.やĐi駅m khác
28
bi閲t gi王a hai lo蔚i này là kí t襖やnewline và end of line.やĐi駅m th応やhaiやđ駅やphân
bi閲t hai ki駅u t餌p tin là là cách lгu tr王やcác s掩やvàoやđĩa.やĐ掩i v艶i d蔚ng văn b姥n
thì các s掩やđг汚c lгu tr王やthành chu煙i các kí t襖やcòn d蔚ng nh園やphân thì các s掩や
đг汚c lгu nhгやtrong b猿やnh艶, nghĩa là dùng hai byte cho m猿t s掩やnguyên và 4
byte cho m猿t s掩やfloat.
3. Nh餌p xu浦t chu云n: Chгбng trình dùng các hàm nh餌p xu浦t c浦p 2 thг薗ng
d謁やhi駅u hбn nên chúng ta s衛やnghiên c応u trг艶c.
a. Nh餌p xu浦t kí t襖:やĐ駅やnh餌p kí t襖やvào t餌p tin ta dùng hàm putc() hay
fputc().やĐ駅やđ奄c kí t襖やt旺やt餌p tin ta dùng hàm getc() hay fgetc(). Chгбng trình
ví d凹やnày là t蔚o l餌p các kí t襖やb影ng cách gõ vào bàn phím m煙i l閏n m猿t kí t襖や
và ghi vào m猿t t餌p tin trênやđĩa. Chгбng trình dùng hàm fopen()やđ駅やm鉛やm猿t
t餌p tin, dùng hàm putc()や đ駅や ghi lên t餌p tin, dùng kí t襖や enterや đ駅や k鋭t thúc
chгбng trình.
Chгбng trình 3ま1 やや
#include <stdio.h>
#include <conio.h>
void main()
やや{
ややややFILE *fp;
ややややchar ch;
ややややprintf(“Nhap cac ki tu : “);
ややややfp=fopen(ぇtextfileぇ,ぇwぇ);
ややややwhile ((ch=getche())!=ぅ\rぅ)
ややややややputc(ch,fp);
ややややfclose(fp);
やや}
b. M鉛やm猿t t餌p tin: Trг艶c khi ghi m猿t t餌p tin lênやđĩa ta ph姥i m鉛やt餌p tin
đóやđã.やĐ駅やm鉛やt餌p tin, trг艶c h鋭t ta ph姥i khai báo m猿t con tr延やch厭やt艶i FILE .
FILE là m猿t structure ch応aやđ襖ng các thông tin v疫やc浦u trúc c奥a t餌p tin ví d凹や
nhгやkích thг艶c, v園やtrí c奥a b猿やđ閲m d王やli閲u hi閲n hành. C浦u trúc FILEやđг汚c
khai báo trong stdio.h nên ta c閏n include t餌p tin này. Ngoài ra stdio.h còn
xácやđ園nh các tên và các bi鋭n khácやđг汚c dùng trong chгбng trình hг艶ngやđ鋭n
các t餌p tin. Do v餌y trong chгбng trình ta có câu l閲nh:
FILE *fp ;
Sauやđó ta m鉛やt餌p tin b影ng l閲nh :
fopen(“textfile”,”w”);
Khi vi鋭t nhгや v餌y s衛や làm cho h閲や đi疫u hành bi鋭t là m鉛や m猿t t餌p tin tên là
textfile trong thгやm凹c hi閲n hànhやđ駅やvi鋭t lên t餌p tinやđó (nh薗や“w”). Ta có th駅や
29