1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Ip 09 file in c

29 2 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

Tiêu đề Xử Lý Tập Tin
Tác giả GV. Nguyễn Minh Huy
Trường học Nhà Hàng Đại Học
Chuyên ngành Nhập Môn Lập Trình
Thể loại Bài Giảng
Định dạng
Số trang 29
Dung lượng 480,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

Microsoft PowerPoint IP 09 File in C XửXử lýlý tậptập tintin GV GV NguyễnNguyễn Minh Minh HuyHuy XửXử lýlý tậptập tintin 1Nhập môn lập trình GV Nguyễn Minh Huy NộiNội dungdung �� ThiếtThiết bịbị vàvà[.]

Trang 2

 Thiết Thiết bị bị và và stream stream.

 Các Các thao thao tác tác trên trên tập tập tin tin.

Trang 3

 Thiết Thiết bị bị và và stream stream.

 Các Các thao thao tác tác trên trên tập tập tin tin.

Trang 4

 Khái Khái niệm niệm thiết thiết bị bị::

 Dữ Dữ liệu liệu   Chương Chương trình trình   Kết Kết quả quả

 Chương Chương trình trình lấy lấy dữ dữ liệu liệu từ từ đâu đâu? ?

 Chương Chương trình trình xuất xuất kết kết quả quả ra ra đâu đâu? ?



 Thiết Thiết bị bị (device) (device).

 Phân Phân loại loại thiết thiết bị bị::

 ThiếtThiết bịbị nhậpnhập: : bànbàn phímphím, con , con chuộtchuột, , tậptập tin, Btin, B

 ThiếtThiết bịbị xuấtxuất: : mànmàn hìnhhình, , máymáy in, in, tậptập tin, Btin, B



 TậpTập tin tin làlà thiếtthiết bịbị vừavừa nhậpnhập vừavừa xuấtxuất

Trang 5

 Khái Khái niệm niệm stream: stream:

 Chương Chương trình trình đọc đọc//ghi ghi dữ dữ liệu liệu từ từ thiết thiết bị bị thế thế nào nào? ?



 Thông Thông qua qua những những ““dòng dòng chảy chảy” ” dữ dữ liệu liệu



 Stream Stream.

 Phân Phân loại loại stream: stream:

 Stream Stream nhậpnhập: “: “dòngdòng chảychảy” ” vàovào chươngchương trìnhtrình từtừ thiếtthiết bịbị nhậpnhập

 Stream Stream xuấtxuất: “: “dòngdòng chảychảy” ” khỏikhỏi chươngchương trìnhtrình từtừ thiếtthiết bịbị xuấtxuất

Trang 6

 Khái Khái niệm niệm stream: stream:

 Các Các stream stream định định nghĩa nghĩa sẵn sẵn trong trong C: C:

Stream Ý nghĩa Thiết bị kết nối

stdin Stream nhập chuẩn Bàn phím

stdout Stream xuất chuẩn Màn hình

stderr Stream lỗi chuẩn Màn hình

 Lệnh Lệnh nhập nhập xuất xuất tổng tổng quát quát::

 fscanf fscanf((<Stream>, “<<Stream>, “<ĐịnhĐịnh dạngdạng kiểukiểu>”, &<>”, &<BiếnBiến 1>, B1>, B));;

 fprintf fprintf((<Stream>, “<<Stream>, “<ĐịnhĐịnh dạngdạng xuấtxuất>”, <>”, <BiếnBiến 1>, B1>, B));;

fprintf fprintf( ( stdout stdout, “Hello World” );, “Hello World” ); // // Xuất Xuất ra ra màn màn hình hình

fprintf fprintf( ( stdprn stdprn, “Hello World” );, “Hello World” ); // // Xuất Xuất ra ra máy máy in in.

stderr Stream lỗi chuẩn Màn hình

stdprn Stream in chuẩn Máy in

Trang 7

 Thiết Thiết bị bị và và stream stream.

 File stream.

 Các Các thao thao tác tác trên trên tập tập tin tin.

Trang 8

File stream

 Nhập Nhập xuất xuất bằng bằng tập tập tin: tin:

 Ưu Ưu điểm điểm::

 ChứaChứa đượcđược nhiềunhiều dữdữ liệuliệu

 KhôngKhông cầncần thôngthông qua qua ngườingười dùngdùng

 LưuLưu trữtrữ đượcđược lâulâu dàidài

 Khuyết Khuyết điểm điểm::

 Khuyết Khuyết điểm điểm::

 TốcTốc độđộ xửxử lýlý chậmchậm

Trang 9

File stream

 Nhập Nhập xuất xuất tập tập tin tin trong trong C: C:

 Dùng Dùng file stream file stream.

 ““DòngDòng chảychảy” ” kếtkết nốinối chươngchương trìnhtrình vàvà tậptập tin.tin

 KhaiKhai báobáo: : FILE * FILE *<<TênTên stream>.stream>

FILE * FILE *f1;f1;

FILE * FILE *f2;f2;

FILE * FILE *f2;f2;

 Các Các bước bước xử xử lý lý tập tập tin: tin:

 BướcBước 1: 1: mởmở tậptập tin.tin

 BướcBước 2: 2: thaothao táctác trêntrên tậptập tin.tin

 BướcBước 3: 3: đóngđóng tậptập tin.tin

Trang 10

File stream

 Lệnh Lệnh mở mở tập tập tin: tin:

 Thiết Thiết lập lập một một file stream file stream đến đến tập tập tin tin.

 CúCú pháppháp: : fopen fopen((“<“<ĐườngĐường dẫndẫn tậptập tin>”, “<tin>”, “<ChếChế độđộ mởmở>”>”));;

 TrảTrả vềvề: file stream (: file stream (thànhthành côngcông), NULL (), NULL (thấtthất bạibại).)

 BảngBảng cáccác chếchế độđộ mởmở tậptập tin:tin:

r Read-only, mở để đọc dữ liệu (kiểu text).

Trả về NULL nếu không tìm thấy tập tin.

w Write-only, mở để ghi dữ liệu (kiểu text).

Tập tin sẽ được tạo nếu chưa có, ngược lại sẽ ghi đè.

a Append-only, mở để ghi thêm dữ liệu (kiểu text).

Tập tin sẽ được tạo nếu chưa có.

[Chế độ mở]+ Kết hợp đọc, ghi cùng lúc.

[Chế độ mở]b Đọc, ghi kiểu nhị phân (binary).

Trang 11

File stream

 Lệnh Lệnh đóng đóng tập tập tin: tin:

 Hủy Hủy file stream file stream đến đến tập tập tin tin.

 Cú phápCú pháp: : fclose fclose((<File stream> <File stream>));;

 ChỉChỉ đóngđóng đượcđược tậptập tin tin đangđang mởmở

 LuônLuôn đóngđóng tậptập tin tin sausau khikhi kếtkết thúcthúc côngcông việcviệc

printf printf(“ (“Khong Khong mo mo duoc duoc tap tin! tap tin!\\n”); n”);

fclose fclose(( f f ));; // // Sai Sai

}}

else {{

printf printf(“ (“Da Da mo mo duoc duoc tap tin! tap tin!\\n”); n”);

fclose fclose(( f f ));; // // Đúng Đúng

}}

Trang 12

File stream

 Vị Vị trí trí nhập nhập xuất xuất hiện hiện hành hành::

 Điểm Điểm kết kết nối nối của của F File ile stream stream vào vào tập tập tin tin.

 Nhập Nhập xuất xuất luôn luôn bắt bắt đầu đầu từ từ vị vị trí trí hiện hiện hành hành

 Vị Vị trí trí hiện hiện hành hành thay thay đổi đổi sau sau mỗi mỗi thao thao tác tác nhập nhập xuất xuất

Trang 13

File stream

 Lệnh Lệnh thay thay đổi đổi vị vị trí trí hiện hiện hành hành::

 Thay Thay đổi đổi điểm điểm kết kết nối nối File stream File stream vào vào tập tập tin tin.

 Cú phápCú pháp: : fseek fseek((<File stream>, <<File stream>, <ĐộĐộ dờidời>, <>, <VịVị trítrí gốcgốc>>));;

 <<VịVị trítrí gốcgốc>:>:

 SEEK_SET ( SEEK_SET (đầu đầu tập tập tin) tin).

 SEEK_CUR ( SEEK_CUR (vị vị trí trí hiện hiện hành hành) ).

 SEEK_END ( SEEK_END (cuối cuối tập tập tin) tin).

 ChỉChỉ thaythay đổiđổi vịvị trítrí hiệnhiện hànhhành vớivới tậptập tin tin đangđang mởmở

FILE

FILE *f *f = = fopen fopen((“C:“C:\\\\BaiTap.txt”, “BaiTap.txt”, “rr”);”);

if (

if ( ff != NULL )!= NULL ) {{

fseek

fseek(( ff, 2, SEEK_CUR , 2, SEEK_CUR ));; // // Tiến Tiến tới tới 2 bytes 2 bytes.

fclose fclose( f ); ( f );

}}

Trang 14

File stream

 Lệnh Lệnh thông thông báo báo vị vị trí trí hiện hiện hành hành::

 Thông Thông báo báo vị vị trí trí hiện hiện hành hành so so với với đầu đầu tập tập tin tin.

 CúCú pháppháp: : ftell ftell((<File stream> <File stream>));;

 ChỉChỉ thôngthông báobáo vịvị trítrí hiệnhiện hànhhành vớivới tậptập tin tin đangđang mởmở

fseek fseek( f, 0, SEEK_END ); ( f, 0, SEEK_END );

long

long filesize filesize = = ftell ftell(( ff ));; // // Lấy Lấy kích kích thước thước tập tập tin tin.

fclose fclose( f ); ( f );

}}

Trang 15

 Thiết Thiết bị bị và và stream stream.

 Các Các thao thao tác tác trên trên tập tập tin tin.

Trang 16

 Các Các thao thao tác tác cơ cơ bản bản::

 Đọc Đọc dữ dữ liệu liệu: : theo theo định định dạng dạng

 CúCú pháppháp::

fscanf fscanf((<File stream>, “<<File stream>, “<ĐịnhĐịnh dạngdạng kiểukiểu>”, &<>”, &<BiếnBiến 1>, B1>, B));;

 TrảTrả vềvề: : sốsố biếnbiến đọcđọc đượcđược ((thànhthành côngcông), EOF (), EOF (thấtthất bạibại).)

int a, b a, b;;

int a, b a, b;;

FILE *f = FILE *f = fopen fopen(“C: (“C:\\\\BaiTap.txt”, “BaiTap.txt”, “rr”);”);

if ( f == NULL ) printf

printf(“ (“Khong Khong mo mo duoc duoc tap tin! tap tin!\\n”); n”);

else {{

fscanf fscanf( ( f, “%d %d”, f, “%d %d”, &a, &b &a, &b ));;

fclose fclose( f ); ( f );

}}

Trang 17

 Các Các thao thao tác tác cơ cơ bản bản::

 Đọc Đọc ký ký tự tự::

 CúCú pháppháp: : fgetc fgetc((<File stream> <File stream>));;

 TrảTrả vềvề: : kýký tựtự ((thànhthành côngcông), EOF (), EOF (thấtthất bạibại).)

 Đọc Đọc chuỗi chuỗi::

Cú pháppháp: : fgets fgets((<<BiếnBiến chuỗichuỗi>, <>, <SốSố kýký tựtự>, <File stream>>, <File stream>));;

 CúCú pháppháp: : fgets fgets((<<BiếnBiến chuỗichuỗi>, <>, <SốSố kýký tựtự>, <File stream>>, <File stream>));;

 Ý Ý nghĩanghĩa: : đọcđọc chuỗichuỗi đếnđến khikhi gặpgặp kýký tựtự \\n n hoặchoặc đủđủ <<SốSố kýký tựtự>.>

 TrảTrả vềvề: : độđộ dàidài chuỗichuỗi ((thànhthành côngcông), EOF (), EOF (thấtthất bạibại).)

char

char s[100] s[100];;

FILE *f = FILE *f = fopen fopen(“C: (“C:\\\\BaiTap.txt”, “BaiTap.txt”, “rr”);”);

if ( f != NULL ) {{

fgets fgets( s ( s, 99, f , 99, f ));;

fclose fclose( f ); ( f );

}}

Trang 18

 Các Các thao thao tác tác cơ cơ bản bản::

 Ghi Ghi dữ dữ liệu liệu: : theo theo định định dạng dạng

 Cú phápCú pháp::

fprintf fprintf((<File stream>, “<<File stream>, “<ĐịnhĐịnh dạngdạng kiểukiểu>”, <>”, <BiếnBiến 1>, B1>, B));;

 TrảTrả vềvề: : sốsố byte byte ghighi đượcđược ((thànhthành côngcông), EOF (), EOF (thấtthất bạibại).)

printf(“ (“Khong Khong tao tao duoc duoc tap tin! tap tin!\\n”); n”);

else {{

fprintf

fprintf( ( f, “f, “Gia Gia tri = %d %f %c”, tri = %d %f %c”, a, b, c a, b, c ));;

fclose fclose( f ); ( f );

}}

Trang 19

 Các Các thao thao tác tác cơ cơ bản bản::

 Đọc Đọc dữ dữ liệu liệu: : theo theo khối khối byte (binary) byte (binary).

 CúCú pháppháp::

fread

fread((<<VùngVùng nhớnhớ>, <>, <KíchKích thướcthước khốikhối> , <> , <SốSố khốikhối đọcđọc>, <File stream>>, <File stream>));;

 TrảTrả vềvề: : sốsố khốikhối thậtthật sựsự đọcđọc đượcđược



 KếtKết thúcthúc tậptập tin tin khikhi sốsố khốikhối thậtthật sựsự < < sốsố khốikhối đọcđọc



 KếtKết thúcthúc tậptập tin tin khikhi sốsố khốikhối thậtthật sựsự < < sốsố khốikhối đọcđọc

int a[10] a[10];;

char

char s[100] s[100];;

FILE *f = FILE *f = fopen fopen(“C: (“C:\\\\BaiTap.txt”, “BaiTap.txt”, “rb rb”);”);

if ( f != NULL ) {{

fread

fread( a ( a, , sizeof sizeof((int int), 10, ), 10, f f ));; // // Đọc Đọc 10 10 số số nguyên nguyên

fread fread( s ( s, , sizeof sizeof(char), 100, (char), 100, f f )); ; // // Đọc Đọc 100 100 ký ký tự tự

fclose fclose( f ); ( f );

}}

Trang 20

 Các Các thao thao tác tác cơ cơ bản bản::

 Ghi Ghi dữ dữ liệu liệu: : theo theo khối khối byte (binary) byte (binary).

 Cú phápCú pháp::

fwrite

fwrite((<<VùngVùng nhớnhớ>, <>, <KíchKích thướcthước khốikhối> , <> , <SốSố khốikhối>, <File stream>>, <File stream>));;

 TrảTrả vềvề: : sốsố khốikhối thậtthật sựsự ghighi đượcđược

if ( f != NULL ) {{

fwrite

fwrite( a ( a, , sizeof sizeof((int int), 3, ), 3, f f ));; // // Ghi Ghi 3 3 số số nguyên nguyên

fwrite fwrite( s ( s, , sizeof sizeof(char), (char), strlen strlen(s), (s), f f )); // ; // Ghi Ghi chuỗi chuỗi s s.

fclose fclose( f ); ( f );

}}

Trang 21

 Các Các thao thao tác tác cơ cơ bản bản::

 Sao Sao chép chép 2 files: 2 files:

#define SO_BYTE 100 char

char a[ SO_BYTE ] a[ SO_BYTE ];;

FILE **f_dich f_dich = = fopen fopen(“C: (“C:\\\\BaiTap_Copy.txt”, “BaiTap_Copy.txt”, “wb wb”); ”);

int soluong soluong;;

} while (

} while (soluong soluong == SO_BYTE); == SO_BYTE);

fcloseall fcloseall(); ();

}}

Trang 22

 Một Một số số lệnh lệnh quản quản lý lý tập tập tin: tin:

 Xóa Xóa tập tập tin: tin:

 CúCú pháppháp: : remove( remove(“<“<ĐườngĐường dẫndẫn tậptập tin>”tin>”));;

 TrảTrả vềvề: 0 (: 0 (thànhthành côngcông), ), 1 (1 (thấtthất bạibại).)

 KhôngKhông cầncần phảiphải mởmở vàvà đóngđóng tậptập tin.tin

if (if (remove( remove(“C:“C:\\\\BaiTap1.txt”BaiTap1.txt”)) == == 0 0))

printf printf(“ (“Da Da xoa xoa thanh thanh cong! cong!\\n”); n”);

else

printf printf(“ (“Khong Khong xoa xoa duoc duoc!!\\n”); n”);

Trang 23

 Một Một số số lệnh lệnh quản quản lý lý tập tập tin: tin:

 Đổi Đổi tên tên tập tập tin: tin:

 CúCú pháppháp: : rename( rename(“<“<ĐườngĐường dẫndẫn cũcũ”, “<”, “<ĐườngĐường dẫndẫn mớimới>”>”));;

 HaiHai đườngđường dẫndẫn phảiphải cùngcùng mộtmột ổ ổ đĩađĩa

 TrảTrả vềvề: 0 (: 0 (thànhthành côngcông), ), 1 (1 (thấtthất bạibại).)

 CóCó thểthể dùngdùng đểđể didi chuyểnchuyển tậptập tin.tin

 CóCó thểthể dùngdùng đểđể didi chuyểnchuyển tậptập tin.tin

 KhôngKhông cầncần phảiphải mởmở vàvà đóngđóng tậptập tin.tin

if (

if (rename( rename(“C:/BaiTap1.txt”, “C:/BaiTap“C:/BaiTap1.txt”, “C:/BaiTap\\\\BaiTap2.txt”BaiTap2.txt”)) == == 0 0))

printf printf(“ (“Da Da doi doi ten ten thanh thanh cong! cong!\\n”); n”);

else

printf printf(“ (“Khong Khong doi doi ten ten duoc duoc!!\\n”); n”);

Trang 24

 Thiết Thiết bị bị và và stream: stream:

 Chương Chương trình trình trao trao đổi đổi dữ dữ liệu liệu với với thiết thiết bị bị

 Stream Stream kết kết nối nối chương chương trình trình và và thiết thiết bị bị

 Kết Kết nối nối chương chương trình trình và và tập tập tin tin.

 Kết Kết nối nối chương chương trình trình và và tập tập tin tin.

 Các Các bước bước: : mở mở tập tập tin, tin, thao thao tác tác tập tập tin, tin, đóng đóng tập tập tin tin.

 Các Các thao thao tác tác trên trên tập tập tin: tin:

 Đọc Đọc: : fscanf fscanf, , fgetc fgetc, , fgets fgets, , fread fread

 Ghi Ghi: : fprintf fprintf, , fwrite fwrite

 Xóa Xóa: remove : remove

 Đổi Đổi tên tên/Di /Di chuyển chuyển: rename : rename

Trang 25

 Bài Bài tập tập 9.1: 9.1:

Viết

Viết chươngchương trìnhtrình C C tìmtìm sốsố nguyênnguyên tốtố nhưnhư sausau::

ĐọcĐọc vàovào 2 2 sốsố nguyênnguyên dươngdương M, N M, N từtừ file input.txt.file input.txt

XuấtXuất cáccác sốsố nguyênnguyên tốtố trongtrong đoạnđoạn [M, N] [M, N] vàovào file output.txt.file output.txt

Trang 26

 Bài Bài tập tập 9.2: 9.2:

Ma

Ma trậntrận M x N M x N đượcđược lưulưu trongtrong file matrix.txt file matrix.txt nhưnhư sausau::

DòngDòng đầuđầu tiêntiên chứachứa: M N (: M N (kíchkích thướcthước ma ma trậntrận).)

M M dòngdòng tiếptiếp theotheo, , dòngdòng ii (0 <= (0 <= ii <= M <= M –– 1) 1) chứachứa: a: ai1 ai2 B B aaiN(N

(N phầnphần tửtử thuộcthuộc dòngdòng ii củacủa ma ma trậntrận).)

Viết

Viết chươngchương trìnhtrình C C thaothao táctác ma ma trậntrận nhưnhư sausau::

Viết

Viết chươngchương trìnhtrình C C thaothao táctác ma ma trậntrận nhưnhư sausau::

NhậpNhập vàovào ma ma trậntrận M x N M x N từtừ file matrix.txt.file matrix.txt

XuấtXuất phầnphần tửtử cócó giágiá trịtrị bằngbằng tổngtổng cáccác phầnphần tửtửcòn

còn lạilại trongtrong ma ma trậntrận rara file result.txt.file result.txt

Trang 27

 Bài Bài tập tập 9.3: 9.3:

Viết

Viết chươngchương trìnhtrình C C nốinối 2 files 2 files nhưnhư sausau::

NhậpNhập vàovào đườngđường dẫndẫn file 1.file 1

NhậpNhập vàovào đườngđường dẫndẫn file 2.file 2

ThựcThực hiệnhiện nốinối nộinội dung file 2 dung file 2 vàovào cuốicuối file 1.file 1

Trang 28

 Bài Bài tập tập 9.4: 9.4:

Viết

Viết chươngchương trìnhtrình C C soạnsoạn thảothảo vănvăn bảnbản nhưnhư sausau::

NhậpNhập vàovào đườngđường dẫndẫn file file đểđể lưulưu vănvăn bảnbản

SoạnSoạn thảothảo vănvăn bảnbản từtừ bànbàn phímphím vàvà lưulưu vàovào file file vớivới đườngđường dẫndẫnđã

đã nhậpnhập ((kếtkết thúcthúc soạnsoạn thảothảo khikhi nhấnnhấn phímphím ESC).ESC)

Trang 29

cách thứcthức mãmã hóahóa nhưnhư sausau::

ThốngThống nhấtnhất vớivới cáccác tướngtướng lĩnhlĩnh mộtmột sốsố nguyênnguyên K K đểđể làmlàm khóakhóa

KhiKhi viếtviết mậtmật lệnhlệnh, , mỗimỗi chữchữ cáicái gốcgốc (A (A –– Z) Z) sẽsẽ đượcđược dịchdịchchuyển

chuyển sang sang phảiphải mộtmột khoảngkhoảng K K đểđể trởtrở thànhthành chữchữ cáicái mãmã hóahóa

chuyểnchuyển sang sang phảiphải mộtmột khoảngkhoảng K K đểđể trởtrở thànhthành chữchữ cáicái mãmã hóahóa

ĐểĐể giảigiải mãmã, , mỗimỗi chữchữ cáicái mãmã hóahóa trongtrong mậtmật lệnhlệnh sẽsẽ đượcđược dịchdịchchuyển

chuyển ngượcngược lạilại sang sang tráitrái mộtmột khoảngkhoảng K K đểđể trởtrở vềvề chữchữ cáicái gốcgốc Hãy

Hãy viếtviết chươngchương trìnhtrình C C mãmã hóahóa vàvà giảigiải mãmã nhưnhư sausau::

a) a) TạoTạo file file mậtmật lệnhlệnh mãmã hóahóa từtừ mộtmột file file vănvăn bảnbản

b) b) GiảiGiải mãmã mộtmột file file mậtmật lệnhlệnh thànhthành file file vănvăn bảnbản

Ngày đăng: 11/04/2023, 18:48

w