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

Bài giảng Tin học đại cương Phần 2: Bài 8 - Nguyễn Thành Kiên

36 106 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 36
Dung lượng 0,92 MB

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

Nội dung

Cùng tìm hiểu Tệp dữ liệu là nội dung bài 8 thuộc bộ Bài giảng Tin học đại cương Phần 2 hướng đến trình bày. Ở bài này các bạn sẽ được tìm hiểu về khái niệm và phân loại tệp; các thao tác với tệp.

Trang 1

TIN H C Đ I C Ọ Ạ ƯƠ NG

Bài 8. T P D  LI U Ệ Ữ Ệ

       Nguy n Thành Kiên ễ

      B  môn K  thu t máy tính ộ ỹ ậ          Khoa Công ngh  thông tin –  HBK HN ệ Đ

Trang 3

 8.1. Khái ni m và phân lo i t p ệ ạ ệ

Trang 4

8.1. Khái ni m và phân lo i t p ệ ạ ệ

 Khái ni m t p d  li u: ệ ệ ữ ệ

 T p d  li u ( ệ ữ ệ File) 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  ệ ớ ể

d  li u.  ữ ệ

 T p đ ệ ượ ư c l u tr  trên các thi t b  nh   ữ ế ị ớ

ngoài (đĩa m m, đĩa c ng, CD­ROM…) v i  ề ứ ớ

m t tên nào đó đ  phân bi t v i nhau ộ ể ệ ớ

 T p là ph ệ ươ ng ti n dùng đ  c t gi  d  li u  ệ ể ấ ữ ữ ệ lâu dài.

Trang 5

8.1. Khái ni m và phân lo i t p ệ ạ ệ

 Phân lo i t p: d a theo b n ch t d  li u c a  ạ ệ ự ả ấ ữ ệ ủ

th  là s  nguyên, s  th c, các c u trúc d  li u… ể ố ố ự ấ ữ ệ

 N u thông tin đế ược mã hóa là kí t  thì khi đó t p ự ệ

nh  phân tr  thành t p văn b n. Vì v y t p văn ị ở ệ ả ậ ệ

Trang 6

8.1. Khái ni m và phân lo i t p ệ ạ ệ

 T  ch c c a t p ổ ứ ủ ệ

E O F  . . . .

làm vi c c a t p ệ ủ ệ

Trang 7

8.1. Khái ni m và phân lo i t p ệ ạ ệ

 Con tr  t p: ỏ ệ

 Các ph n t  c a m t t p t o thành m t dãy và t i ầ ử ủ ộ ệ ạ ộ ạ

m t th i đi m ta ch  có th  truy c p độ ờ ể ỉ ể ậ ược vào m t ộ

ph n t  c a t p mà thôi. ầ ử ủ ệ

 Con tr  t p (File positon locator) là bi n đ m đ  ỏ ệ ế ệ ểtruy c p vào m t ph n t  c a t p, đánh d u v  trí ậ ộ ầ ử ủ ệ ấ ịtruy c p vào t p t i th i đi m xác đ nh. ậ ệ ạ ờ ể ị

 Khi m  t p con tr  t p s  luôn tr  vào v  trí đ u ở ệ ỏ ệ ẽ ỏ ị ầtiên c a t p. Sau m i thao tác đ c ghi trên t p, ủ ệ ỗ ọ ệcon tr  t p s  t  đ ng d ch chuy n v  phía cu i ỏ ệ ẽ ự ộ ị ể ề ố

t p. Kho ng cách d ch chuy n (tính theo byte) s  ệ ả ị ể ẽ

Trang 8

8.1. Khái ni m và phân lo i t p ệ ạ ệ

Trang 9

 8.1. Khái ni m và phân lo i t p ệ ạ ệ

Trang 10

 8.1. Khái ni m và phân lo i t p ệ ạ ệ

Trang 11

8.2.1. Khai báo t p ệ

 Trong C truy nh p t p ph i thông qua  ậ ệ ả con tr  t p. M t con tr  t p ( ỏ ệ ộ ỏ ệ file pointer) 

FILE *tên_con_tr _t p; ỏ ệ

FILE *f1, *f2;

Trang 12

 8.1. Khái ni m và phân lo i t p ệ ạ ệ

Trang 13

“r” M   t p  đã  có  đ   đ c,  không  đ ở ệ ể ọ ượ c  ghi.  N u  t p  không  t n  t i,  hàm  ế ệ ồ ạ

fopen() s  tr  l i tr ng thái l i ẽ ả ạ ạ ỗ

“w” M  t p m i đ  ghi. N u t p đã t n t i n i dung c a nó s  b  xóa h t ở ệ ớ ể ế ệ ồ ạ ộ ủ ẽ ị ế

“a” M  t p đ  ghi thêm d  li u vào cu i t p. N u t p ch a t n t i, nó s   ở ệ ể ữ ệ ố ệ ế ệ ư ồ ạ ẽ

đ ượ ạ c t o m i ớ

Kí hi u B n ch t d  li u c a ả ấ ữ ệ ủ

t p

“b” T p nh  phân ệ ị

Trang 14

 Đ  m  t p  ể ở ệ c:\abc.txt đ  v a đ c và ghi ta  ể ừ ọ

Trang 15

L u ý khi m  t p ư ở ệ

 N u vi c m  t p không thành công, và  ế ệ ở ệ hàm fopen() s  tr  v  giá tr  NULL đ   ẽ ả ề ị ể báo r ng vi c m  t p không thành  ằ ệ ở ệ

Trang 17

 8.1. Khái ni m và phân lo i t p ệ ạ ệ

Trang 19

 L u các giá tr  đ c đư ị ọ ược vào danh_sách_đ a_ch ị ỉ

int fscanf(FILE* con_tr _t p, xâu_đ nh_d ng, [danh_sách_đ a_ch ]);  ỏ ệ ị ạ ị ỉ

struct  {

       int n; char c;

Trang 20

 L u các giá tr  đ c đư ị ọ ược + “\n\0” vào xâu_ký_t ự

 Giá tr  tr  v :ị ả ề n u đ c thành công hàm fgets() tr  ế ọ ả

v  xâu kí t  tr  b i xâu_kí_t , n u có l i nó s  tr  ề ự ỏ ở ự ế ỗ ẽ ả

char* fgets(char* xâu_kí_t , int n, FILE* con_tr _t p); ự ỏ ệ  

Trang 21

 Giá tr  tr  v : n u thành công hàm getc() tr  v  kí ị ả ề ế ả ề

t  đ c đự ọ ược sau khi đã chuy n sang d ng ể ạ int. 

int getc(FILE* con tr  t p); ỏ ệ

Trang 23

 Cú pháp khai báo:

 Hàm fprintf() có ch c năng hoàn toàn tứ ương t  ự

nh  hàm printf(), ch  có m t ch  khác là hàm ư ỉ ộ ỗprintf() ghi d  li u lên thi t b  ra chu n (stdin, ữ ệ ế ị ẩthông thường là màn hình) còn fprintf() ghi d  li u ữ ệlên m t t p độ ệ ược ch  đ nh trong tham s  ỉ ị ố

Trang 24

 Cú pháp khai báo:

 Hàm fputs() s  ghi n i dung c a xâu_kí_t  lên t p ẽ ộ ủ ự ệ

tương  ng v i con_tr _t p, tuy nhiên nó khác v i ứ ớ ỏ ệ ớhàm puts()   ch  nó không t  đ ng ghi thêm kí t  ở ỗ ự ộ ự

xu ng dòng lên t p.ố ệ

 Giá tr  tr  v :ị ả ề n u th c hi n thành công hàm ế ự ệ

fputs() tr  v  kí t  cu i cùng mà nó ghi đả ề ự ố ược lên 

t p, còn n u không thành công nó tr  v  giá tr  ệ ế ả ề ị

int fputs(char* xâu_kí_t , FILE* con_tr _t p); ự ỏ ệ

Trang 25

 Cú pháp khai báo:

 Hàm putc()ghi n i dung c a kí t  ch a trong bi n ộ ủ ự ứ ế

int ch (kí t  đ c ch a trong byte th p c a bi n ự ượ ứ ấ ủ ếch) lên t p tệ ương  ng v i con_tr _t p.ứ ớ ỏ ệ

 Giá tr  tr  v : n u thành công hàm putc() s  tr  ị ả ề ế ẽ ả

v  s  nguyên (ki u ề ố ể int) là s  th  t  trong b ng ố ứ ự ả

mã ASCII c a kí t  đã ghi lên t p. N u không ủ ự ệ ế

thành công nó tr  v  giá tr  ả ề ị EOF. 

int putc(int ch, FILE* con_tr _t p); ỏ ệ  

Trang 26

 Hàm ki m tra xem trong kh i d  li u để ố ữ ệ ược đ c ọ

vào   l n th c hi n g n nh t có ph n t  ở ầ ự ệ ầ ấ ầ ử EOF hay 

không, n u có thì hàm feof() tr  v  m t giá tr  ế ả ề ộ ị

Trang 27

M t s  thao tác khác ộ ố

 Hàm fseek() dùng đ  d ch chuy n con tr  t p t  ể ị ể ỏ ệ ừ

v _trí_ban_đ u đi m t kho ng cách có đ  dài n ị ầ ộ ả ộbytes. 

 Giá tr  tr  v : hàm fseek() s  tr  v  giá tr  0 n u ị ả ề ẽ ả ề ị ế

nh  vi c d ch chuy n thành công, và tr  v  giá tr  ư ệ ị ể ả ề ịkhác 0 n u vi c d ch chuy n không thành công. ế ệ ị ể

int fseek(FILE* con_tr _t p, long int n, int v _trí_ban_đ u);  ỏ ệ ị ầ

Tên h ng Giá 

n có th  âm ể fseek(f,10,SEEK_SET);

Trang 28

M t s  thao tác khác ộ ố

 Hàm rewind() s  đ a con tr  t p v  đ u  ẽ ư ỏ ệ ề ầ

t p. V i file_ptr là m t bi n con tr  t p,  ệ ớ ộ ế ỏ ệ

hàm rewind(file_ptr) t ươ ng đ ươ ng v i  ớ

fseek(file_ptr,0,SEEK_SET);

 Hàm rewind() không có giá tr  tr  v   ị ả ề

void rewind(FILE* con_tr _t p); ỏ ệ  

Trang 29

 8.1. Khái ni m và phân lo i t p ệ ạ ệ

Trang 30

8.2.4. Truy nh p t p nh  phân ậ ệ ị

 Đ c d  li u trên t p  ọ ữ ệ ệ

 Hàm fread() đ c t  t p m t kh i d  li u kích ọ ừ ệ ộ ố ữ ệ

thước s _m c ố ụ  s _byte bytes, sau đó ghi kh i ố ố

d  li u đó lên vùng nh  có đ a ch  là ữ ệ ớ ị ỉ

đ a_ch _bi n.ị ỉ ế

 K t qu  tr  v : n u vi c đ c d  li u t  t p th c ế ả ả ề ế ệ ọ ữ ệ ừ ệ ự

hi n thành công, hàm fread() tr  v  m t giá tr  ệ ả ề ộ ịnguyên là s  m c (không ph i s  bytes) đ c đố ụ ả ố ọ ược 

int fread(void *đ a_ch _bi n, int s _byte, int s _m c, FILE* con_tr _t p); ị ỉ ế ố ố ụ ỏ ệ

int a[3];

fread(a,2,3,f);

double d;

fread(&d,4,1,f);

Trang 31

8.2.4. Truy nh p t p nh  phân ậ ệ ị

 Ghi d  li u trên t p ữ ệ ệ

 Hàm fwrite() s  đ c t  b  nh  m t kh i d  li u có ẽ ọ ừ ộ ớ ộ ố ữ ệ

đ a ch  b t đ u là đ a_ch _bi n và có kích thị ỉ ắ ầ ị ỉ ế ước 

là s _byte ố  s _m c bytes, sau đó nó ghi kh i ố ụ ố

d  li u này lên t p.ữ ệ ệ

 K t qu  tr  v : n u vi c ghi d  li u lên t p th c ế ả ả ề ế ệ ữ ệ ệ ự

hi n thành công, hàm fwrite() s  tr  v  m t giá tr  ệ ẽ ả ề ộ ịnguyên là s  m c (không ph i s  bytes) đã ghi ố ụ ả ốlên t p. N u th c hi n không thành công thì hàm ệ ế ự ệ

int fwrite(void *đ a_ch _bi n, int s _byte, int s _m c, FILE* <con tr  t p>); ị ỉ ế ố ố ụ ỏ ệ  

Trang 33

 8.1. Khái ni m và phân lo i t p ệ ạ ệ

Trang 34

8.2.5. Đóng t p ệ

int fclose(FILE* <tên con tr  t p>); ỏ ệ

 Hàm fclose() tr  l i giá tr  0 n u đóng thành công, ả ạ ị ế

tr  v  giá tr  EOF n u không đóng t p thành ả ề ị ế ệ

công. 

Trang 35

Bài t p ậ

Bài 1: Vi t ch ế ươ ng trình copy file:

 Nh p vào t  bàn phím 2 xâu kí t  là đậ ừ ự ường d n ẫ

c a file ngu n và file đích.ủ ồ

 Copy n i dung c a file ngu n sang file đích.ộ ủ ồ

Bài 2: Vi t ch ế ươ ng trình ghép n i n i dung 2  ố ộ

file

 Nh p vào t  bàn phím 2 xâu kí t  là đậ ừ ự ường d n ẫ

Trang 36

Bài t p ậ

Bài 3: M t t p văn b n tên là "thisinh.txt" l u DL v  các thí sinh và  ộ ệ ả ư ề

có t  ch c nh  sau: ổ ứ ư

Hãy vi t ch ế ươ ng trình

các thí sinh theo quy cách:

So thu tu So bao danh Ho ten Điem thi

Ngày đăng: 30/01/2020, 17:13

TỪ KHÓA LIÊN QUAN

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