kỹ thuật lập trình C chuyên nghiệp phần 8 docx

17 388 0
kỹ thuật lập trình C chuyên nghiệp phần 8 docx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Kiể ấ túKiể ấ tú Kiể u c ấ u t r ú c Kiể u c ấ u t r ú c  KháiKhái niệmniệm  KhaiKhai báobáo  PhânPhân loạiloại  PhânPhân loạiloại  CácCác thaothao táctác Khái iệKhái iệ Khái n iệ m Khái n iệ m  TậpTậptintin làlà kiểukiểudữdữ liệuliệuhỗhỗ trợtrợ truytruy xuấtxuất//lưulưutrữtrữ dữdữ liệuliệutrêntrên bộbộ nhớnhớ ngoàingoài ỗỗ ểể  CCh ỗ h ỗ trợtrợ haihai ki ể uki ể utậptập tintin::vănvănbảnbảnvàvà nhịnhị p hân p hân  TruyTruy xuấtxuất thôngthông quaqua concon trỏtrỏ FILEFILE Kiể FILE *Kiể FILE * Kiể u FILE *Kiể u FILE * KiểKiể FILE * (FILE * ( kh ikh i bábá tt tdi htdi h )) hh héhé làlà iệiệ  Kiể u Kiể u FILE * (FILE * ( kh a ikh a i bá o bá o t rong t rong s tdi o. h s tdi o. h ) ) c h oc h o phé p phé p là m là mv iệ cv iệ c vớivới cáccác tậptập tin (tin (vănvănbảnbản, , nhịnhị phânphân).).  Khai Khai báobáo con con trỏtrỏ tậptập tin tin FILE * FILE * fpfp;;  ChúngChúng tata sửsử dụngdụng con con trỏtrỏ tậptập tin tin đểđể truytruy cậpcập((đọcđọc, , ghighi, , thêmthêm thôn g thôn g tin ) tin ) cáccác tậ p tậ p tin.tin. gg )) pp Mở tậ tiMở tậ ti Mở tậ p ti n Mở tậ p ti n FILE * FILE * fopenfopen ( const char * ( const char * FileNameFileName const char * Mode);const char * Mode); FILE FILE fopenfopen ( const char ( const char FileNameFileName , const char Mode); , const char Mode);  Filename:Filename: têntên tậptập tintin cầncần mởmở CóCó thểthể chỉchỉ địnhđịnh mộtmột đườngđường  Filename: Filename: têntên tậptập tin tin cầncần mởmở . . CóCó thểthể chỉchỉ địnhđịnh mộtmột đườngđường dẫndẫn đầyđầy đủđủ chỉchỉđếnđếnvịvị trítrí củacủatậptập tin.tin.  Mode: Mode: chếchếđộđộ mởmở tậptập tin: tin: chỉchỉđọcđọc, , đểđể ghighi ((tạotạomớimới), ), ghighi thêmthêm  NếuNếu t h aot h ao táctác m ở m ở t h à nh t h à nh cô n gcô n g , , f ope nf ope n t r ảt r ả vềvề co n co n t r ỏt r ỏ FILE FILE t r ỏt r ỏ NếuNếu taotao táctác ởở tàtà cô gcô g ,, opeope t ảt ả vềvề coco t ỏt ỏ t ỏt ỏ đếnđếntậptập tin tin FileNameFileName  NếuNếumởmở khôngkhông thànhthành côngcông ((FileNameFileName khôngkhông tồntồntạitại, , khôngkhông thểthể tạotạomớimới), ), fopenfopen trảtrả vềvề giágiá trịtrị NULL.NULL. Đótậ tiĐótậ ti Đó ng tậ p ti n Đó ng tậ p ti n itit fl (fl ( FILEFILE *fil t*fil t )) i n ti n t f c l ose (f c l ose ( FILEFILE *fil es t ream *fil es t ream )) ;; fil tfil t t ỏt ỏ đếđế tậtậ titi đđ ởở ầầ đóđó  fil es t ream fil es t ream::concon t r ỏt r ỏ đế n đế n tậ p tậ p ti n ti n đ ang đ ang m ở m ở c ầ nc ầ n đó ng đó ng NếNế hh áá đóđó hà hhà h ôô flfl ảả ềề 00  Nế u Nế ut h aot h ao t á ct á c đó ng đó ng t hà n h t hà n h c ô ng,c ô ng, f c l ose f c l ose tr ả tr ả v ề v ề 00  NếuNếucócó lỗilỗi(tập(tập tintin đangđang sửsử dụng),dụng), fclosefclose trảtrả vềvề giágiá trịtrị EOFEOF Ví d Mở Đótậ tiVí d Mở Đótậ ti Ví d ụ : Mở , Đó ng tậ p ti n Ví d ụ : Mở , Đó ng tậ p ti n 11 FILE *FILE * ff 1 . 1 . FILE * FILE * f p f p;; //// ởở VB TXT “VB TXT “ hỉhỉ đđ ”” 2.2. // // m ở m ở VB . TXT “VB . TXT “ c hỉ c hỉ đ ọc đ ọc ”” 3.3. if( (if( (fpfp = = fopenfopen( “C:( “C:\\\\LTCLTC\\\\VB.TXT”, “r” )) == NULL)VB.TXT”, “r” )) == NULL) {{ ifif (“T i(“T i khkh dd \\ ”)”) 4.4. { { p r i nt fp r i nt f ( “T ap t i n ( “T ap t i n kh ong kh ong mo mo d uoc d uoc \\ n ”) ;n ”) ; 5.5. exit(1); exit(1); }} 6.6. } } / ** // ** / / // / 77 fclosefclose (( fpfp );); 7 . 7 . fclosefclose ( ( fpfp );); Tậ ti ă bảTậ ti ă bả Tậ p ti n v ă n bả n Tậ p ti n v ă n bả n  T ập T ập tintin vănvănbảnbảnlàlà ki ể uki ể ut ập t ập tintin đư ợ cđư ợ clưulưutr ữ tr ữ cáccác thôn g thôn g tintin ậpập ậpập ợợ gg dướidướidạngdạng kiểukiểukýký tựtự  Tru y Tru y xu ấ txu ấ ttậ p tậ p tintin vănvănbảnbản:: yy pp  theotheo từngtừng kýký tựtự  theotheo từn g từn g dòn g dòn g gg gg  ChếChếđộđộ mởmở trêntrên tậptập tintin vănvănbảnbản  “r”“r” :: đ ọ cđ ọ c (( t ập t ập tintin p hải p hảicócó trêntrên đĩađĩa )) ọọ (( ậpập pp ))  “w”“w” :: ghighi ((ghighi đèđèlênlên tậptập tintin cũcũ hoặchoặctạotạomớimớinếunếutậptập tintin khôngkhông cócó trêntrên đĩađĩa))  “a”“a” :: ghighi nốinốivàovào cuốicuốitậptập tintin  “r+”“r+” :: đọcđọc// g hi g hi Tậ p Tậ p tintin p hải p hảicócó trêntrên đĩađĩa gg pp pp  “a+”“a+” :: đọcđọc,, ghighi vàovào cuốicuốitậptậptintin TạoTạomớimớitậptậptintin nếunếutậptập tintin chưachưacócó trêntrên đĩađĩa t tftf tt tftf t ge t c, pu t c, f ge t c, f pu t cge t c, pu t c, f ge t c, f pu t c  getcgetc :: nhậnnhận kýký tựtự từtừ tậptập tintin  getcgetc : : nhậnnhận kýký tựtự từtừ tậptập tin . tin . intint getcgetc ( FILE *( FILE *fpfp );); getcgetc trảtrả vềvề kýký tựtựđọcđọc đượcđượchoặchoặc trảtrả vềvề EOFEOF nếunếu fpfp khôngkhông hợphợp lệlệ hoặchoặc đọcđọc đếnđến cuốicuối tậptập tintin trảtrả vềvề EOF EOF nếunếu fpfp khôngkhông hợphợp lệlệ hoặchoặc đọcđọc đếnđến cuốicuối tậptập tin . tin .  p utc p utc: : g hi g hi k ý k ý t ự t ự rara t ập t ập tin.tin. pp gg ýý ựự ậpập intint putcputc ( ( intint Ch, FILE * Ch, FILE * fpfp );); putcputc trảtrả vềvề EOF EOF nếunếu thaothao táctác ghighi cócó lỗilỗi  cócó thểthể dùngdùng fgetcfgetc vàvà fputcfputc Ví d 1t()đ hí đế khi E tVí d 1t()đ hí đế khi E t Ví d ụ 1 : ge t c () đ ọc p hí m đế n khi E n t er Ví d ụ 1 : ge t c () đ ọc p hí m đế n khi E n t er 1.1. #include#include <<stdiostdio hh>> 2.2. #include#include <<conioconio hh>> 3.3. #include#include <<stdlibstdlib hh>> idid i()i() 4.4. vo id vo id ma i n () ma i n () 5.5. {{FILEFILE **fpfp;; 6.6. charchar filename[filename[ 6767 ],], chch ;; 6.6. charchar filename[filename[ 6767 ],], chch ;; 7.7. printfprintf (( “Filename“Filename::““));; 8.8. getsgets (filename)(filename);; 9.9. ifif ((((fpfp == fopenfopen (filename,(filename, “w”“w” )))) ==== NULLNULL ))//// mởmở tậptập tintin mớimới đểđể ghighi 1010 {{ printfprintf (( “ Create “ Create filefile errorerror \\ n ” )n ” ) ;; exitexit (( 11 )) ;; }} 10 . 10 . {{ printfprintf (( CreateCreate filefile errorerror \\ n)n) ;; exitexit (( 11 )) ;; }} 11.11. whilewhile (((( chch == getchegetche()() ))!=!= ‘‘\\r’r’ ))//// đọcđọcchocho đếnđến khikhi gặpgặpENTERENTER 12.12. putcputc ((fpfp ));; 13.13. fclosefclose ((fpfp ));; 14.14. }} Ví d ụ 2: p utc () in n ộ i dun g t ập tin văn Ví d ụ 2: p utc () in n ộ i dun g t ập tin văn ụ p() ộ g ậpụ p() ộ g ập bản ra màn hìnhbản ra màn hình 11 #include <#include < stdio hstdio h >> 1 . 1 . #include <#include < stdio . hstdio . h >> 2.2. #include <#include <conio.hconio.h>> 3.3. #include <#include <stdlib.hstdlib.h>> 4.4. void main()void main() 5.5. { FILE * { FILE * fpfp;; 6.6. char filename[67], char char filename[67], char chch;; 7.7. printfprintf ( “Filename: “ );( “Filename: “ ); 88 gets (filename);gets (filename); 8 . 8 . gets (filename);gets (filename); 9.9. if ((if ((fpfp = = fopenfopen (filename, “r” )) == NULL ) // (filename, “r” )) == NULL ) // mởmở tậptập tin tin mớimới đểđể đọcđọc 10.10. { { p rintf p rintf ( “O p en file error ( “O p en file error \\ n” ); exit ( 1 ); } n” ); exit ( 1 ); } {{ pp (p(p ); ( ); }); ( ); } 11.11. while (( while (( chch = = getcgetc ( ( fpfp ) ) != EOF ) // ) ) != EOF ) // đọcđọcchocho đếnđếnhếthếttậptập tintin 12.12. printfprintf ( “%c”, ( “%c”, chch );); 13.13. fclosefclose ( ( fpfp );); 14.14. }} [...]... *Str, int NumOfChar, FILE *fp ); *Str, NumOfChar, *fp fgets đ c c c ký tự trong tập tin cho đến khi gặp một trong c c điều kiện: kiện: EOF gặp dòng mới đ c đư c (NumOfChar - 1) ký tự trư c khi gặp hai điều kiện trên trên fgets trả về chuỗi ký tự đ c đư c (kết th c bằng \0) ho c trả về con trỏ NULL nếu EOF ho c có lỗi khi đ c đ c fputs() f t () fputs: fputs hi h ỗi tự tập tin f t : ghi chuỗi ký t ra... 16 17 18 19 20 while (( ch = getc ( fp ) ) != EOF ) // đ c cho đến hết tập tin { if (( ch >= ‘a’ && ch = ‘A’ && ch .  fgetsfgets trảtrả vềvề chuỗichuỗi kýký tựtự đ c c đư c ư c (( kếtkết thúcth c bằngbằng \ 0)0) hoặcho c  fgetsfgets trảtrả vềvề chuỗichuỗi kýký tựtự đ c c đư c ư c (( kếtkết thúcth c bằngbằng \ 0) 0) hoặcho c trảtrả vềvề con con trỏtrỏ. phânphân thườngthường dùngdùng đểđể lưulưutrữtrữ c cc c cấucấutrúctr c (( structstruct )) hoặcho c unionunion (( structstruct ) ) hoặcho c union . union .  KhaiKhai báobáo ::  Khai Khai . đ c ọcchuỗichuỗik ý k ý t ự t ự t ừ t ừ tậ p tậ p tin.tin. gg ýý pp char * char * fgetsfgets ( char *( char *StrStr, , intint NumOfCharNumOfChar, FILE *, FILE *fpfp );); fgetsfgets đ c c cáccác

Ngày đăng: 22/07/2014, 16:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan