Dữ liệu kiểu File trong Pascal

Chia sẻ: diemanh

Tệp là một kiểu dữ liệu có cấu trúc. Định nghĩa tệp có phần nào giống mảng ở chỗ chúng đều là tập hợp của các phần tử dữ liệu cùng kiểu. Song mảng được khai báo trong chương trình với số phần tử đã xác định, còn số phần tử của tệp không xác định khi định nghĩa

Bạn đang xem 7 trang mẫu tài liệu này, vui lòng download file gốc để xem toàn bộ.

Chủ đề liên quan:

 

Nội dung Text: Dữ liệu kiểu File trong Pascal

 

  1. D ữ li ệu ki ểu File 1.Kh¸i niÖm vÒ tÖp TÖp hay tÖp d÷ liÖu lµ mét tËp hîp c¸c d÷ liÖu cã liªn quan víi nhau vµ cã cïng kiÓu ®îc nhãm l¹i víi nhau t¹o thµnh mét d·y. Chóng th êng ®îc chøa trong mét thiÕt bÞ nhí ngoµi cña m¸y tÝnh (®Üa mÒm, ®Üa cøng...) TÖp d÷ liÖu theo nghÜa réng : cã thÓ ®ã lµ ch¬ng tr×nh, cã thÓ lµ sè liÖu, cã thÓ lµ c¸c d÷ liÖu kh¸c nh kÝ tù, v¨n b¶n... TÖp ®îc lu tr÷ trong bé nhí ngoµi nh ®Üa cøng, ®Üa mÒm...§iÒu ®ã cã nghÜa lµ tÖp ®îc lu tr÷ ®Ó dïng nhiÒu lÇn vµ tån t¹i ngay c¶ khi ch¬ng tr×nh kÕt thóc hoÆc mÊt ®iÖn. V× vËy nhng d÷ liÖu nµo cÇn lu gi÷ th× chóng ta b¾t buéc ph¶i dïng ®Õn tÖp. TÖp lµ mét kiÓu d÷ liÖu cã cÊu tróc. §Þnh nghÜa tÖp cã phÇn nµo gièng m¶ng ë chç chóng ®Òu lµ tËp hîp cña c¸c phÇn tö d÷ liÖu cïng kiÓu. Song m¶ng ®îc khai b¸o trong ch¬ng tr×nh víi sè phÇn tö ®· x¸c ®Þnh, cßn sè phÇn tö cña tÖp kh«ng x¸c ®Þnh khi ®Þnh nghÜa 2. C¸ch ®Þnh nghÜa tÖp trong Pascal C¸ch 1 TYPE KiÓu_tÖp = FILE OF kiÓu_phÇn_tö; Sau ®ã ta khai b¸o VAR BiÕn_TÖp : KiÓu_tÖp; C¸ch 2 : khai b¸o trùc tiÕp VAR BiÕn_tÖp : FILE OF KiÓu_phÇn_tö; VD : TYPE FileInteger = FILE OF integer; FileReal = FILE OF real; FileBoolean = FILE OF Boolean; Nhan_su = RECORD Ten : String[30]; Tuoi : Byte; Luong : Real; 1
  2. END; VAR F1,F2 : FileInteger; F3 : FileReal; FNS : FILE OF Nhan_su; F5 : FILE OF Char; 3.Më tÖp míi ®Ó cÊt d÷ liÖu a. Më tÖp ®Ó ghi Pascal dïng 2 thñ tôc ®i liÒn nhau theo thø tù ASSIGN (BiÕn_TÖp, Tªn_tÖp); G¸n tªn_tÖp cho biÕn_tÖp; REWRITE (BiÕn_TÖp); VD : ASSIGN(F1,'NGUYENTO.DAT'); REWRITE(F1); Sau khi më tÖp xong, tÖp sÏ rçng v× cha cã phÇn tö nµo, cöa sæ tÖp sÏ kh«ng cã gi¸ trÞ x¸c ®Þnh v× nã trá vµo cuèi tÖp (EOF). L y ý, nÕu trªn ®Üa cã tËp tin trïng víi tªn cña tÖp më th× nã sÏ bÞ xo¸ ®i. b.Ghi c¸c gi¸ trÞ vµo tÖp víi thñ tôc WRITE C¸ch viÕt Write (BiÕn_tÖp, Item1, Item2, ... , ItemN); Trong ®ã Item1, Item2,...ItemN lµ c¸c h»ng, biÕn, c¸c biÓu thøc vµ ph¶i cã gi¸ trÞ cïng víi kiÓu phÇn tö cña tÖp VD : Víi I,J,K lµ c¸c biÕn INTEGER, ta cã thÓ viÕt : Write (F1, 3, I+2*J, K, 5); Bíc cuèi cïng cña viÖc ®Æt d÷ liÖu vµo tÖp lµ ®ãng tÖp b»ng thñ tôc CLOSE (BiÕn_TÖp) VD : CLOSE(F1); 4. §äc d÷ liÖu tõ mét tÖp ®· cã a. Më tÖp ®Ó ®äc Pascal dïng 2 thñ tôc ®i liÒn nhau theo thø tù ASSIGN (BiÕn_TÖp, Tªn_tÖp); G¸n tªn_tÖp cho biÕn_tÖp; RESET (BiÕn_TÖp); VD : ASSIGN(F1,'NGUYENTO.DAT'); RESET(F1); Sau khi më tÖp xong, nÕu tÖp kh«ng rçng th× cöa sæ bao giê còng trá vµo phÇn tö ®Çu tiªn cña tÖp 2
  3. b.§äc d÷ liÖu tõ tÖp C¸ch viÕt Read (BiÕn_tÖp, Var1, Var2, ... , VarN); Trong ®ã Var1, Var2,...VarN chØ cã thÓ lµ c¸c biÕn cã gi¸ trÞ cïng víi kiÓu phÇn tö cña tÖp ViÖc ®äc mét phÇn tö cña tÖp cßn cÇn cã ®iÒu kiÖn : ph¶i xem tÖp cã cßn phÇn tö kh«ng, tøc lµ cöa sæ tÖp cha trá ®Õn EOF. Hµm EOF(BiÕn_tÖp)=TRUE nÕu cöa sæ tÖp trá vµo cuèi tÖp vµ EOF(BiÕn_tÖp)=FALSE nÕu cöa sæ vÉn trá vµo phÇn tö cña tÖp VD : Muèn ®äc tÊt c¶ c¸c phÇn tö cña tÖp WHILE not EOF(BiÕn_TÖp) DO BEGIN Read(BiÕn_TÖp, X); .................. END; c.Bíc cuèi cïng cña viÖc ®äc d÷ liÖu tõ tÖp lµ ®ãng tÖp b»ng thñ tôc CLOSE (BiÕn_TÖp) VD : CLOSE(F1); 5.TÖp truy nhËp trùc tiÕp V× ®é dµi cña c¸c phÇn tö trong tÖp lµ nh nhau nªn ta cã thÓ truy nhËp trùc tiÕp vµo vÞ trÝ cña mét phÇn tö nµo ®ã trong tÖp b»ng c¸ch dïng SEEK C¸ch viÕt SEEK (BiÕn_TÖp, No) No lµ sè thø tù cña phÇn tö trong tÖp Theo thñ tôc nµy m¸y sÏ ®Æt cöa sæ tÖp vµo phÇn tö thø No. Sau ®ã ta chØ cÇn dïng c¸c thñ tôc READ ®Ó ®äc nã ra hoÆc WRITE ®Ó ®Æt gi¸ trÞ míi vµo 6.C¸c thñ tôc vµ hµm xö lÝ tÖp cña Pascal FILESIZE (F) : cho sè phÇn tö cña tÖp F FILEPOS (F) : cho vÞ trÝ tøc thêi cña con trá ERASE (F) : xo¸ FILE trªn ®Üa cã tªn ®· g¸n vµo F RENAME (F, St) : ®æi tªn tÖp thµnh St (kiÓu String) 7.TÖp v¨n b¶n (TEXT FILE) 3
  4. a. C¸ch khai b¸o VAR BiÕn_tÖp : TEXT; VD : VAR F1,F2 : TEXT C¸c phÇn tù cña tÖp kiÓu TEXT lµ c¸c kÝ tù (ch÷ viÕt) song TEXT kh¸c víi FILE OF Char ë chç TEXT ®îc tæ chøc thµnh tõng dßng víi ®é dµi mçi dßng kh¸c nhau nhê cã thªm c¸c dÊu hÕt dßng. §ã lµ cÆp kÝ tù ®iÒu khiÓn : - CR (Carriage Return) : nh¶y vÒ ®Çu dßng, m· sè ASCII=13 - LF (Line Feed) : nh¶y xuèng dßng tiÕp theo, m· sè ASCII=10 Chóng ®îc nhËn d¹ng ®Ó ng¨n c¸ch gi÷a 2 d·y kÝ tù t ¬ng øng víi 2 dßng kh¸c nhau VD : §o¹n v¨n b¶n sau VI DU 1234 HET M¸y sÏ chøa trong tÖp v¨n b¶n thµnh mét d·y nh sau : VI DU ³ CR LF ³ 1234 ³ CR LF ³ HET ³ EOF b.Ghi vµo tÖp v¨n b¶n Cã 3 thñ tôc Write(BiÕn_TÖp, Item1, Item2,...ItemN); Writeln(BiÕn_TÖp, Item1, Item2,...ItemN); Writeln(BiÕn_TÖp); Trong ®ã Item1, Item2,...ItemN lµ c¸c h»ng, biÕn, biÓu thøc cã kiÓu ®¬n gi¶n nh Integer, real, Boolean, String. C¸ch viÕt vµo tÖp v¨n b¶n còng nh c¸ch viÕt ra mµn h×nh nhng kh¸c víi mµn h×nh chØ h¹n chÕ cã 80 dßng x 25 cét. Cßn tÖp v¨n b¶n cã sè dßng, cét kh«ng giíi h¹n (xem l¹i Ch¬ng 3 : Thñ tôc vµo ra d÷ liÖu) c.§äc d÷ liÖu tõ tÖp v¨n b¶n Chóng ta cã thÓ ®äc kh«ng nh÷ng kÝ tù tõ tÖp v¨n b¶n mµ cßn cã thÓ ®äc c¸c sè nguyªn sè thùc, boolean tõ tÖp v¨n b¶n th«ng qua c¸c thñ tôc Read(BiÕn_TÖp, Var1, Var2,...VarN); (1) Readln(BiÕn_TÖp, Var1, Var2,...VarN); (2) Readln(BiÕn_TÖp); (3) 4
  5. Trong ®ã Var1, Var2,...VarN lµ c¸c biÕn kiÓu Char, Integer, String, Real, Boolean. Thñ tôc (2) ®äc xong sÏ ®a cöa sæ tÖp sang ®Çu dßng tiÕp theo Thñ tôc (3) kh«ng ®äc g× c¶ chØ ®a cöa sæ tÖp sang ®Çu dßng tiÕp theo 8. KiÓm tra tÖp khi më XÐt ®o¹n ch¬ng tr×nh sau sÏ kiÓm tra xem tÖp F cã trªn ®Üa hay kh«ng VAR st:string; F:TEXT; BEGIN Write('NhËp tªn tÖp : ');readln(st); assign(f,st);{$I-} reset(f); if ioresult=0 then write('TÖp ',St,' cã trªn ®Üa') else write('TÖp ',St,' kh«ng cã trªn ®Üa') END; 9. TÖp kh«ng ®Þnh kiÓu TÖp kh«ng ®Þnh kiÓu lµ mét kiÓu file ®Æc biÖt. §ã lµ tÖp khi ®Þnh nghÜa hay khai b¸o ra, ta kh«ng nãi râ nã chøa g×, kh«ng nãi râ b¶n chÊt c¸c d÷ liÖu ghi trong ®ã. V× vËy viÖc chuyÓn d÷ liÖu tõ ®Üa vµo cÊu tróc d÷ liÖu sÏ ®îc thùc hiÖn ngay lËp tøc. §ã lµ lÝ do v× sao tÖp kh«ng ®Þnh kiÓu ®îc dïng réng r·i trong c¸c øng dông ®ßi hái tèc ®é cao. C¸ch khai b¸o VAR BiÕn_tÖp : FILE; ViÖc ghi vµ ®äc d÷ liÖu ®èi víi tÖp kh«ng ®Þnh kiÓu th êng xuyªn dïng ®Õn 2 thñ tôc BLOCKREAD vµ BLOCKWRITE { NhËp N. Sau ®ã nhËp N sè nguyªn tõ bµn phÝm Ghi c¸c sè ®ã vµo file 'bai1.dat'. Sau ®ã më l¹i file ®ã ®äc N sè ®ã vµ tÝnh tæng cña chóng (file kiÓu byte)} uses crt; var i,a,n:byte;{i,a,n kiÓu byte} f:file of byte;{biÕn f kiÓu tÖp (byte)} 5
  6. tong:integer;{tong kiÓu integer} begin clrscr;{Xo¸ mµn h×nh} assign(f,'bai1.dat');rewrite(f);{Më file bai1.dat ®Ó ghi} write('N = ');readln(n);{§äc N} for i:=1 to n do{Cho i ch¹y tõ 1 ®Õn N} begin write('Nhap so thu ',i,' : ');readln(a);{§äc sè thø i vµo a} write(f,a);{Ghi a vµo f} end; close(f);{§ãng tÖp F} tong:=0;{G¸n tong b»ng 0} assign(f,'bai1.dat');reset(f);{Më file bai1.dat ®Ó ®äc} for i:=1 to n do{Cho i ch¹y tõ 1 ®Õn N} begin read(f,a);{§äc tõ f biÕn a} inc(tong,a);{Céng a vµo tæng} end; writeln('Tong = ',tong);{XuÊt tæng} readln; end. { ViÕt thñ tôc taofile(s:string;n:integer) t¹o ra n sè nguyªn ngÉu nhiªn tõ 1..10000 råi sau ®ã ghi vµ file (kiÓu integer)cã tªn lµ s Sau ®ã thö t¹o ra file 'bai21.dat' cã 10 phÇn tö, 'bai22.dat' cã 20 phÇn tö} uses crt; var f:file of integer;{f kiÓu tÖp integer} procedure taofile(s:string;n:integer); var i,a:integer;{Khai b¸o i,a kiÓu integer} begin assign(f,s);rewrite(f);{Mëi file s ®Ó ghi} for i:=1 to n do{Cho i ch¹y tõ 1 ®Õn n} begin 6
  7. a:=random(10000)+1;{G¸n a b»ng sè ngÉu nhiªn tõ 1..10000} write(f,a);{Ghi a vµo f} end; close(f);{§ãng tÖp f} end; begin randomize; taofile('bai21.dat',10); taofile('bai22.dat',20); end. { ViÕt ch¬ng tr×nh t¬ng tù nh bµi tËp 2 nh ng lÇn nµy t¹o ra n kÝ tù ngÉu nhiªn trong kho¶ng tõ 'A'..'Z' vµ ghi vµo tÖp 'bai3.dat'. Sau ®ã më l¹i file ®Õm xem cã bao nhiªu kÝ tù 'A', bao nhiªu 'B'....} uses crt; var dem:array['A'..'Z']of byte;{M¶ng dem['A'..'Z'] kiÓu byte} f:file of char;{f kiÓu tÖp kÝ tù} ch:char;{ch kiÓu kÝ tù} i,n:byte;{i,n kiÓu byte} procedure taofile(s:string;n:integer); var i:byte;{Khai b¸o i kiÓu byte} begin assign(f,s);rewrite(f);{Më file s ®Ó ghi} for i:=1 to n do{Cho i ch¹y tõ 1 ®Õn N} begin ch:=chr(random(26)+65);{G¸n ch b»ng kÝ tù ngÉu nhiªn tõ 'A'..'Z'} write(f,ch);{Ghi ch vµo f} end; close(f);{§ãng tÖp f} end; begin clrscr;{Xo¸ mµn h×nh} randomize; write('N = ');readln(n);{§äc N} 7
  8. taofile('bai3.dat',n); assign(f,'bai3.dat');reset(f);{Më file bai3.dat ®Ó ®äc} for i:=1 to n do{Cho i ch¹y tõ 1 ®Õn N} begin read(f,ch);{§äc kÝ tù ch tõ f} inc(dem[ch]);{T¨ng dem[ch]} end; for ch:='A' to 'Z' do{Cho ch ch¹y tõ 'A'..'Z'} if dem[ch]>0 then{NÕu ch cã xuÊt hiÖn th×} writeln('Chu ',ch,' xuat hien ',dem[ch],' lan');{XuÊt ch vµ sè lÇn xuÊt hiÖn} readln; end. { T¹o ra 2 file sè nguyªn ngÉu nhiªn (bµi 2) file 1 cã m phÇn tö, file 2 cã n phÇn tö råi sau ®ã ghi vµo file bai41.dat, bai42.dat Sau ®ã më l¹i 2 file nµy. §äc hÕt c¸c phÇn tö cña 2 file vµo m¶ng A. S¾p xÕp l¹i theo thø tù t¨ng dÇn råi sau ®ã ghi vµo file bai4.dat} uses crt; var a:array[1..10000]of integer;{M¶ng a 10000 phÇn tö kiÓu integer} f:file of integer;{f kiÓu tÖp integer} i,j,tg,m,n:integer;{i,j,tg,m,n kiÓu byte} procedure taofile(s:string;n:integer); var i,a:integer;{Khai b¸o i,a kiÓu integer} begin assign(f,s);rewrite(f);{Më file s ®Ó ghi} for i:=1 to n do{Cho i ch¹y tõ 1 ®Õn N} begin a:=random(10000)+1;{G¸n a b»ng sè ngÉu nhiªn tõ 1..10000} write(f,a);{Ghi a vµo tÖp f} end; close(f);{§ãng tÖp f} end; begin 8
  9. clrscr;{Xo¸ mµn h×nh} randomize; write('M = ');readln(m);{§äc M} write('N = ');readln(n);{§äc N} taofile('bai41.dat',m); taofile('bai42.dat',n); assign(f,'bai41.dat');reset(f);{Më file bai41.dat ®Ó ®äc} for i:=1 to m do read(f,a[i]);{§äc m phÇn tö tö f vµo a} close(f);{§ãng tÖp f} assign(f,'bai42.dat');reset(f);{Më file bai42.dat ®Ó ®äc} for i:=1 to n do read(f,a[m+i]);{§äc n phÇn tö tö f vµo a} close(f);{§ãng tÖp f} for i:=1 to m+n-1 do{Cho i ch¹y tõ 1 ®Õn m+n-1} for j:=i+1 to m+n do{Cho j ch¹y tõ i+1 ®Õn m+n} if a[i]>a[j]then{NÕu a[i]>a[j] th×} begin tg:=a[i];a[i]:=a[j];a[j]:=tg;{§æi chç a[i],a[j]} end; assign(f,'bai4.dat');rewrite(f);{Më file bai4.dat ®Ó ghi} for i:=1 to m+n do write(f,a[i]);{Ghi m+n phÇn tö tõ a vµo f} close(f);{§ãng tÖp f} end. { ViÕt ch¬ng tr×nh nhËp tõ bµn phÝm liªn tôc c¸c x©u S. Ghi chóng vµo file 'bai5.txt'. Ch¬ng tr×nh kÕt thóc khi nhËp chuçi S rçng} uses crt; var s:string;{X©u S} f:text;{f kiÓu tÖp v¨n b¶n} begin clrscr; assign(f,'bai5.txt');rewrite(f);{Më file bai5.txt ®Ó ghi} repeat readln(s);{§äc S} if s<>''then writeln(f,s);{NÕu S kh«ng rçng th× ghi s vµo f} 9
  10. until s='';{Cho ®Õn khi S rçng} close(F);{§ãng tÖp F} end. { ViÕt ch¬ng tr×nh nhËp tõ file 'bai61.txt' lµ file v¨n b¶n. T¹o ra file 'bai62.txt' cã néi dung t¬ng tù nh file 'bai61.txt' nh ng ®æi tÊt c¶ kÝ tù th êng trong file bai61.txt thµnh kÝ tù hoa Híng dÉn WHILE not EOF(F)DO BEGIN §äc x©u S tõ file F §æi S thµnh hoa Ghi S vµo file F1 END} uses crt; var s:string;{X©u S} f,f1:text;{F,F1 kiÓu tÖp v¨n b¶n} i:byte;{i kiÓu byte} begin assign(f,'bai61.txt');reset(f);{Më file bai61.txt ®Ó ®äc (dïng biÕn F)} assign(f1,'bai62.txt');rewrite(f1);{Më file bai62.txt ®Ó ghi (dïng biÕn F1)} while not eof(f)do{Trong khi cha hÕt file f th×} begin readln(f,s);{§äc x©u S tõ F} for i:=1 to length(s)do s[i]:=upcase(s[i]);{§æi S thµnh hoa} writeln(f1,s);{Ghi x©u S vµo F1} end; close(F);close(f1);{§ãng f,f1} end. { ViÕt ch¬ng tr×nh t¹o 2 tÖp v¨n b¶n cã tªn lµ bai71.txt bai72.txt. Mçi tÖp cã 100 dßng. Mçi dßng lµ mét sè nguyªn ®îc t¹o ngÉu nhiªn 10
  11. Sau ®ã më file bai71.txt. §äc c¸c sè trong file ®ã vµ ghÐp vµo cuèi file bai72.txt Híng dÉn Sau khi t¹o file xong th× - Dïng thñ tôc APPEND ®èi víi bai72.txt ®Ó ghi vµo cu«i - §äc lÇn lît c¸c sè tõ tÖp bai71.txt råi ghi vµo tÖp bai72.txt mét c¸ch b×nh th êng} uses crt; var s:string;{X©u S} f,f1:text;{F,F1 kiÓu tÖp v¨n b¶n} i:byte;{i kiÓu byte} procedure taofile(s:string); var i,a:integer;{Khai b¸o i,a kiÓu integer} begin assign(f,s);rewrite(f);{Më file s ®Ó ghi} for i:=1 to 100 do{Cho i ch¹y tõ 1 ®Õn 100} begin a:=random(10000)+1;{G¸n a b»ng sè ngÉu nhiªn tõ 1..10000} writeln(f,a);{Ghi a vµo f} end; close(f);{§ãng tÖp f} end; begin taofile('bai71.txt'); taofile('bai72.txt'); assign(f,'bai71.txt');reset(f);{Më file bai71.txt ®Ó ®äc (dïng biÕn F)} assign(f1,'bai72.txt');append(f1);{Më file bai72.txt ®Ó ghi vµo cuèi (dïng biÕn F1)} for i:=1 to 100 do{Cho i ch¹y tõ 1 ®Õn 100} begin readln(f,s);{§äc x©u s tõ F} writeln(f1,s);{Ghi x©u S vµo F1} end; close(f);close(f1);{§ãng tÖp f,f1} 11
  12. end. { ViÕt ch¬ng tr×nh ®äc tõ bµn phÝm chuçi S1 vµ chuçi S2. NÕu file cã tªn S1 tån t¹i th× ®æi tªn S1 thµnh S2 ngîc l¹i th«ng b¸o file kh«ng tån t¹i} uses crt; var f:file;{f kiÓu tÖp bÊt k×} s1,s2:string;{X©u S1,S2} begin clrscr;{Xo¸ mµn h×nh} write('S1 = ');readln(s1);{§äc S1} write('S1 = ');readln(s2);{§äc S2} assign(f,s1);{$I-}Reset(f);{$I+} if IOResult <> 0 then write('File ',s1,' khong ton tai'){NÕu IOResult<>0 th× kh«ng tån t¹i} else{Ngîc l¹i} begin Close(F);{§ãng tÖp F} rename(F,s2);{§æi tªn D thµnh S2} end; readln; end. { NhËp S. ViÕt ch¬ng tr×nh hiÓn thÞ file v¨n b¶n cã tªn S lªn mµn h×nh. NÕu v¨n b¶n ®ã dµi th× hiÓn thÞ tõng trang råi sau ®ã ®îi cho ngêi dïng bÊm phÝm Enter th× hiÓn thÞ tiªp Híng dÉn i:=0; WHILE not EOF(F)DO BEGIN §äc vµ xuÊt x©u S IF i=23 THEN readln; END;} uses crt; var f:text;{f kiÓu tÖp v¨n b¶n} 12
  13. i:byte;{i kiÓu byte} s:string;{X©u S} begin clrscr;{Xo¸ mµn h×nh} write('S = ');readln(s);{§äc S} assign(f,s);reset(f);{Më s ®Ó ®äc} i:=0;{G¸n i=0} while not eof(f)do{Trong khi cha hÕt tÖp F th×} begin readln(f,s);{§äc S} writeln(s);{XuÊt S} inc(i);{T¨ng i} if i=23 then begin i:=0;readln;end;{NÕu i=23 th× g¸n i=0 vµ dõng l¹i ®îi} end; close(f);{§ãng tÖp F} end. { ViÕt ch¬ng tr×nh m· ho¸ mét file v¨n b¶n b»ng c¸ch : §æi c¸c kÝ tù trong file v¨n b¶n ®ã thµnh kÝ tù cã m· = (255- m·_kÝ_tù_cò) (®æi tÊt c¶ c¸c kÝ tù kÓ c¶ kÝ tù CR,LF...) Híng dÉn Ta më file v¨n b¶n ®ã díi d¹ng file kÝ tù råi lÇn lît ®äc tõng kÝ tù ®æi m· råi ghi vµo file míi Gi¶i m· th× chØ cÇn ch¹y l¹i ch¬ng tr×nh m· ho¸ ®èi víi file ®· m· ho¸} uses crt; var f,f1:file of char;{f,f1 kiÓu tÖp kÝ tù} ch:char;{ch kiÓu kÝ tù} s:string;{X©u S} begin clrscr;{Xo¸ mµn h×nh} write('S = ');readln(s);{§äc S} assign(f,s);reset(f);{Më file S ®Ó ®äc (dïng biÕn F)} assign(f1,'mahoa.dat');rewrite(f1);{Më file mahoa.dat ®Ó ghi (dïng biÕn F1)} 13
  14. while not eof(f)do{Trong khi file f cha hÕt th×} begin read(f,ch);{§äc kÝ tù ch tõ f} ch:=chr(255-ord(ch));{M· ho¸ ch} write(f1,ch);{Ghi ch vµo f1} end; close(f);close(f1);{§ãng tÖp f,f1} end. 14
Theo dõi chúng tôi
Đồng bộ tài khoản