1. Trang chủ
  2. » Công Nghệ Thông Tin

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

17 11 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 303,27 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tham khảo tài liệu ''kỹ thuật lập trình c chuyên nghiệp phần 8'', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Trang 1

Kiể ấ t ú

Kiểu cấu trú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

Trang 2

Khái iệ Khái niệm

„ TậpTập tintin làlà kiểukiểu dữdữ liệuliệu hỗhỗ trợtrợ truytruy xuấtxuất//lưulưu trữtrữ dữ

dữ liệuliệu trêntrên bộbộ nhớnhớ ngoàingoài

ỗỗ ểể

„ CC hỗhỗ trợtrợ haihai kiểukiểu tậptập tintin:: vănvăn bảnbản vàvà nhịnhị phânphân

„ TruyTruy xuấtxuất thôngthông quaqua concon trỏtrỏ FILEFILE

Trang 3

Kiể FILE *

Kiể

Kiể FILE * (FILE * (kh ikh i bábá tt tdi htdi h)) hh héhé làlà iệ

„ KiểuKiểu FILE * (FILE * (khaikhai báobáo trongtrong stdio.hstdio.h) ) chocho phépphép làmlàm việcviệc với

với cáccác tậptập tin (tin (vănvăn bả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êm

thêm thôngthông tin) gg tin) các)) các tậptập tin.pp tin

Trang 4

Mở tậ ti

Mở tập tin

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ẫn

dẫn đầyđầy đủđủ chỉchỉ đếnđến vịvị trítrí củacủa tậptập tin.tin

„ Mode: Mode: chếchế độđộ mởmở tậptập tin: tin: chỉchỉ đọcđọc, , đểđể ghighi ((tạotạo mớimới), ), ghighi

thêm

thêm

„ NếuNếu thaoNếuNếu t aothao táct ao táctác mởtác ởở t àmở thànhthành côngt à công, , fopencô gcô g,, opefopen trảope t ảtrả vềt ả vềvề con về cocon trỏco t ỏtrỏ FILE t ỏ FILE trỏtrỏt ỏ đến

đến tậptập tin tin FileNameFileName

„ NếuNếu mởmở khôngkhông thànhthành côngcông ((FileNameFileName khôngkhông tồntồn tạitại, , khôngkhông thể

thể tạotạo mớimới), ), fopenfopen trảtrả vềvề giágiá trịtrị NULL.NULL

Trang 5

Đó tậ ti

Đóng tập tin

i t

i t f lf l (( FILEFILE *fil t*fil t ))

int

int fclose(fclose( FILEFILE *filestream*filestream ));;

fil t t ỏt ỏ đếđế tậtậ titi đđ ởở ầầ đóđó

„ filestreamfilestream:: concon trỏtrỏ đếnđến tậptập tintin đangđang mởmở cầncần đóngđóng

Nế

Nế hh áá đóđó hà hhà h ôô f l ảả ềề 00

„ NếuNếu thaothao táctác đóngđóng thànhthành công,công, fclosefclose trảtrả vềvề 00

„ NếuNếu có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

Trang 6

Ví d Mở Đó tậ ti

Ví dụ : Mở, Đóng tập tin

11 FILE *FILE * ff

1. FILE * FILE * fpfp;;

//

// ởở VB TXT “VB TXT “ hỉhỉ đđ ””

2. // // mởmở VB.TXT “VB.TXT “chỉchỉ đọcđọc””

3. if( (if( (fpfp = = fopenfopen( “C:( “C:\\\\LTCLTC\\\\VB.TXT”, “r” )) == NULL)VB.TXT”, “r” )) == NULL)

{{ i fi f( “T( “T ii khkh dd \\ ”)”)

4. { { printfprintf( “Tap tin ( “Tap tin khongkhong mo mo duocduoc\\n”);n”);

5. exit(1);

}}

/* */

/* */

/ /

77 fclosefclose(( fpfp ););

7. fclosefclose( ( fpfp ););

Trang 7

Tậ ti ă bả

Tập tin văn bản

„ TậpTập tinập tin vănvăn bảnbản làlà kiểukiểu tậptập tinập tin đượcđược lưuợợ lưu trữtrữ cáccác thôngthông tingg tin dưới

dưới dạngdạng kiểukiểu kýký tựtự

„ TruyTruy xuấtyy xuất tậptập tinpp tin vănvăn bảnbản::

… theotheo từngtừng kýký tựtự

… theotheo từngtừng dònggg dònggg

„ ChếChế độđộ mởmở trêntrên tậptập tintin vănvăn bảnbản

… “r”“r” :: đọcđọc ((tậpọọ (( ậptập tinập tin phảiphải cópp có trêntrên đĩađĩa))))

… “w”“w” :: ghighi ((ghighi đèđè lênlên tậptập tintin cũcũ hoặchoặc tạotạo mớimới nếunếu tậptập tintin không

không cócó trêntrên đĩađĩa))

… “a”“a” :: ghighi nốinối vàovào cuốicuối tậptập tintin

… “r+”“r+” :: đọcđọc//ghighi Tậpgg Tập tinpp tin phảiphải cópp có trêntrên đĩađĩa

… “a+”“a+” :: đọcđọc,, ghighi vàovào cuốicuối tậptập tintin TạoTạo mớimới tậptập tintin nếunếu tậptập tin

tin chưachưa cócó trêntrên đĩađĩa

Trang 8

t t f t f t

getc, putc, fgetc, fputc

„ 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

int int getcgetc ( FILE *( FILE *fpfp ););

getc

getc trảtrả vềvề kýký tựtự đọcđọc đượcđược hoặ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

„ putcputc: : ghipp ghi kýgg ký tựýý ựựtự rara tậptập tin.ập tin

int int putcputc ( ( intint Ch, FILE * Ch, FILE * fpfp ););

putc

putc 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

Trang 9

Ví d 1 t () đ hí đế khi E t

Ví dụ 1: getc() đọc phím đến khi Enter

1 #include #include < <stdio stdio hh> >

2 #include #include < <conio conio hh> >

3 #include #include < <stdlib stdlib hh> >

id i ()

4 void void main() main()

5 {{ FILE FILE ** fp fp;;

6 char char filename[ filename[67 67], ], ch ch;;

6 char char filename[ filename[67 67], ], ch ch;;

7 printf printf (( “Filename “Filename:: ““ ));;

8 gets gets (filename) (filename);;

9 if if (( ((fp fp = = fopen fopen (filename, (filename, “w” “w” )) )) == == NULL NULL )) // // mở mở tập tập tin tin mới mới để để ghi

10 {{ printf printf (( “Create “Create file file error error \\n”) n”);; exit exit ((11));; }}

10 {{ printf printf (( Create Create file file error error \\n ) n );; exit exit ((11));; }}

11 while while (( (( ch ch = = getche getche() () )) != != ‘‘\\r’ r’ )) // // đọc đọc cho cho đến đến khi khi gặp gặp ENTER ENTER

12 putc putc (( fp fp ));;

13 fclose fclose (( fp fp ));;

14 }}

Trang 10

Ví dụ 2: putc() in nội dung tập tin văn ụ ụ p p () () ộ ộ g ập g ập bản ra màn hình

11 #include < #include <stdio h stdio h> >

1 #include < #include <stdio.h stdio.h> >

2 #include < #include <conio.h conio.h> >

3 #include < #include <stdlib.h stdlib.h> >

4 void main()

5 { FILE * { FILE * fp fp;;

6 char filename[67], char char filename[67], char ch ch;;

7 printf printf ( “Filename: “ ); ( “Filename: “ );

88 gets (filename);

8 gets (filename);

9 if (( if ((fp fp = = fopen fopen (filename, “r” )) == NULL ) // (filename, “r” )) == NULL ) // mở mở tập tập tin tin mới mới để để đọc đọc

10 { { printf {{ pp printf ( “Open file error ( “Open file error \\n”); exit (1); } ( ( p p n”); exit (1); } ); ); ( ); } ( ); }

11 while (( while (( ch ch = = getc getc ( ( fp fp ) ) != EOF ) // ) ) != EOF ) // đọc đọc cho cho đến đến hết hết tập tập tin tin

12 printf printf ( “%c”, ( “%c”, ch ch ); );

13 fclose fclose ( ( fp fp ); );

14 }}

Trang 11

Ví dụ 3: Đếm số từ trong tập tin văn ụ ụ g ập g ập

bản.

1 #include #include <stdio <stdio h> h>

2 #include #include <conio <conio h> h>

3 #include #include <stdlib <stdlib h> h>

4 void void main() main()

5 {{ FILE FILE ** fp fp;;

6 char char filename[ filename[67 67], ], char char ch ch;;

77 int int count count = = 00 isword isword = = 00;;

7 int int count count = = 00,, isword isword = = 00;;

8 printf printf (( “Filename pp (( “Filename:: ““ ));; gets ));; gg gets (filename) (filename);; ( ( ) );;

9 if if ((fp ((fp = = fopen fopen (filename, (filename, “r” “r” )) )) == == NULL NULL )) // // mở mở tập tập tin tin mới mới để để đọc đọc

10 {{ printf printf (( “Open “Open file file error error \\n”) n”);; exit exit ((11));; }}

Trang 12

11 while while (( (( ch ch = = getc getc (( fp fp )) )) != != EOF EOF )) // // đọc đọc cho cho đến đến hết hết tập tập tin tin

11 while while (( (( ch ch = = getc getc (( fp fp )) )) != != EOF EOF )) // // đọc đọc cho cho đến đến hết hết tập tập tin tin

12 {{

13 if if (( (( ch (( ch >= >= ‘a’ ‘a’ && && ch ch <= <= ‘z’ ‘z’ )) |||| (( ch )) |||| (( ch >= >= ‘A’ ‘A’ && && ch ch <= <= ‘Z’ ‘Z’ )) )) ))

14 isword isword = =11;;

15 if if (( (( ch ch == == ‘‘ ‘‘ |||| ch ch == == ‘‘\\n’ n’ |||| ch ch == == ‘‘\\t’ t’ )) && && isword isword ))

16 {{ count count ++ ++;; isword isword = = 00;; }}

17 }}

18 printf printf (( “Number “Number of of word word:: % %dd\\n”, n”, count) count);;

19 fclose fclose (( fp (( pp ));; fp ));;

20 }}

Trang 13

f t ()

fgets()

„ fgetsfgets: : đọcgg đọc chuỗichuỗi kýký tựýý tự từtừ tậptập tin.pp tin

char * char * fgetsfgets ( char *( char *StrStr, , intint NumOfCharNumOfChar, FILE *, FILE *fpfp );); fgets

fgets đọcđọc cáccác kýký tựtự trongtrong tậptập tin tin chocho đếnđến khikhi gặpgặp mộtmột trongtrong các

các điềuđiều kiệnkiện::

các

các điềuđiều kiệnkiện::

… EOF

… gặpgặp dòngdòng mớimới

… gặpgặp dòngdòng mớimới

… đọcđọc đượcđược ((NumOfCharNumOfChar 1) 1) kýký tựtự trướctrước khikhi gặpgặp haihai điềuđiều kiện

kiện trêntrên

kiện kiện trêntrên

„ 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ỏ NULL NULL nếunếu EOF EOF hoặchoặc cócó lỗilỗi khikhi đọcđọc

Trang 14

f t ()

fputs()

f t hihi h ỗih ỗi kýký tt tậtậ titi

„ fputsfputs: : ghighi chuỗichuỗi kýký tựtự rara tậptập tin.tin

int int fputsfputs ( const char *( const char *StrStr, FILE *, FILE * fpfp );); int

int fputsfputs ( const char ( const char StrStr, FILE , FILE fpfp ););

„ fputsfputs trảtrả vềvề EOF EOF nếunếu thaothao táctác ghighi cócó lỗilỗi

Trang 15

Hà hé tậ ti ă bả

Hàm chép tập tin văn bản

Có tt áá thth iệ

„ CóCó trongtrong cáccác thưthư việnviện

#include <

#include <stdio.hstdio.h>>

#include

#include stdio.hstdio.h

#include <

#include <string.hstring.h>>

„ /*/* ViếtViết chươngchương trìnhtrình chépchép từtừ SourceFileSourceFile sangsang DestFileDestFile vàvà trả

trả vềvề sốsố kýký tựtự đọcđọc đươcđươc

Trang 16

f f() f f() f i tf() ffl h()

feof(); fscanf(), fprintf(); fflush()

„ feoffeof:: chocho biếtbiết đãđã đếnđến cuốicuối tậptập tintin chưchư a(EOF)a(EOF)

„ feoffeof: : chocho biếtbiết đãđã đếnđến cuốicuối tậptập tin tin chưchư a(EOF).a(EOF)

int int feoffeof (FILE *(FILE *fpfp ););

„ fprintffprintf: :

int int fprintffprintf ( FILE *( FILE *fpfp, const char * Format, );, const char * Format, );

„ fscanffscanf: :

int int fscanffscanf ( FILE *( FILE *fp(( fp, const char * Format, );pp,, const char * Format, );, , );, );

„ fflushfflush: : làmlàm sạchsạch vùngvùng đệmđệm củacủa tậptập tintin

ii ffl hffl h ( FILE *( FILE * ff )) int

int fflushfflush ( FILE * ( FILE * fpfp ););

Trang 17

Tậ ti Nhị hâ

Tập tin Nhị phân

Tậ

Tậ titi hịhị hâhâ làlà ộtột h ỗih ỗi áá kýký tt khôkhô hâhâ biệtbiệt

„ TậpTập tin tin nhịnhị phânphân làlà mộtmột chuỗichuỗi cáccác kýký tựtự, , khôngkhông phânphân biệtbiệt ký

ký tựtự in in đượcđược hay hay khôngkhông in in đượcđược

„ TậpTập tin tin nhịnhị phânphân thườngthường dùngdùng đểđể lưulưu trữtrữ cáccác cấucấu trúctrúc

((structstruct)) hoặchoặc unionunion

((structstruct) ) hoặchoặc union.union

„ KhaiKhai báobáo::

„ Khai Khai báobáo::

FILE * FILE * fpfp;;pp

„ TruyTruy xuấtyy xuất tậptập tin ập tin nhịnhị phânịị ppphân theotheo khốikhối dữdữ liệuliệu nhịệệ nhị phânịị ppphân

Ngày đăng: 08/05/2021, 19:04

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w