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

Ngôn ngữ lập trình C - Chương 5 potx

29 312 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 29
Dung lượng 348,19 KB

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

Nội dung

– Các hàm khác: xem TLTK.

Trang 1

Ch −¬ ng 5

Thao t¸c víi tËp tin

Trang 2

5.1 Luång d÷ liÖu vµ tËp tin

5.1.1 Lu ng d li u và thao tác vào/ra

– Lu ng d li u :

Ph ng ti n trao đ i thông tin đ c l p v i các thi t b truy xu t (còn g i là kênh nh p/xu t).

H th ng t o ra m t thi t b logic t ng ng v i thi t b vào/ra, g i

là lu ng d li u hay kênh nh p/xu t (th ng đ ng nh t v i t p).

S d ng các hàm trong th vi n stdio.h

Bao g m các lu ng vào (stdin), ra (stdout), báo l i (stderr), ph tr (stdaux), in (stdprn).

Thông th ng là bàn phím, màn hình, c ng COM1, máy in trên PRN hay LPT1 Tuy v y H H có th h ng đ n thi t b khác.

Trang 3

5.1 Luång d÷ liÖu vµ tËp tin

Trang 4

5.1 Luång d÷ liÖu vµ tËp tin

– Là m t s nguyên đ c H H cung c p cho t p khi t o hay m t p.

– Các thông tin v t p (đã m ): mô t đ c đi m c a t p

Các thu c tính c a t p : c tr ng thái đ c/ghi.

– C++ s d ng các h ng S_IREAD, S_IWRITE ( đ c, ghi ).

Kích th c và tr ng thái : cho bi t s byte và tr ng thái c a t p.

– S d ng các hàm nh filelength, chsize, …

Ch đ truy n: ki u nh phân hay ki u v n b n.

Trang 5

5.1 Luång d÷ liÖu vµ tËp tin

5.1.3 Thao tác vào/ra v i t p tin

– Các ki u vào/ra v i t p:

M c cao (qua vùng đ m) và m c th p (không qua vùng đ m)

– C++ không cung c p c ch vào/ra å s d ng các hàm vào/ra trong các th vi n do trình d ch cung c p.

Vào/ra m c cao ~ qua vùng đ m: s d ng b đ m (vùng nh trung gian) do ch ng trình (th c ch t là trình d ch) cung c p.

Vào/ra m c th p ~ tr c ti p ~ m c h th ng (tuy nhiên v n có b

đ m do H H cung c p).

– Th vi n h tr vào/ra: stdio.h

Tùy theo ki u vào/ra å s d ng các th vi n thích h p

Tùy vào vi c g n các hàm này v i thi t b vào/ra nào, d li u s

đ c chuy n t /đ n thi t b đó (màn hình, bàn phím, t p, …)

Trang 6

5.2 Thao t¸c vµo/ra tÖp møc cao

Trang 7

5.2 Thao t¸c vµo/ra tÖp møc cao

Trang 8

5.2 Thao t¸c vµo/ra tÖp møc cao

5.2.2 Các hàm vào/ra m c cao

– Các hàm c b n (ti p)

getc, fgetc: đ c kí t t t p, tham s là con tr t p.

putc, fputc: ghi kí t lên t p, tham s là kí t và con tr t p.

VD: int c; //ho c char c;

Trang 9

5.2 Thao t¸c vµo/ra tÖp møc cao

fscanf(fp1, "%f%f", &x, &y);

fprintf(fp2, “(%5.2f, %4.3f)\n", x, y);

– Các hàm dùng cho ki u v n b n khác: xem TLTK

Trang 10

5.2 Thao t¸c vµo/ra tÖp møc cao

fread(c, 1, 100, fp1);

fwrite(c, 1, 100, fp2);

– Các hàm dùng cho ki u nh phân khác: xem TLTK

Trang 11

5.2 Thao t¸c vµo/ra tÖp møc cao

5.2.3 Vào/ra ng u nhiên

– Truy nh p ng u nhiên: thao tác v i con tr t p

Con tr ch v trí c a t p có th tr đ n v trí b t kì trên t p.

Các h ng ch v : SEEK_SET ~ 0, SEEK_CUR ~ 1, SEEK_END ~ 2.

Các hàm thông d ng: fseek, ftell.

Trang 12

5.2 Thao t¸c vµo/ra tÖp møc cao

5.2.4 Cài đ t các thao tác vào/ra d li u

Trang 13

5.2 Thao t¸c vµo/ra tÖp møc thÊp

5.3.1 Khái ni m chung

– Vào/ra t p tin m c th p:

Còn g i là h th ng vào/ra m c I, h th ng vào/ra gi ng UNIX hay

h th ng vào/ra không đ c cung c p vùng đ m.

– V nguyên t c, các hàm này không đ c đ nh ngh a trong ANSI C.

– Các hàm vào/ra m c th p là c s đ xây d ng các hàm vào/ra m c

cao å vi c tìm hi u chúng v n có ý ngh a nh t đ nh.

Duy trì tính k th a và kh n ng t ng thích:

– Tính l ch s : C phát tri n trên n n UNIX, sau đó m r ng sang các

n n khác å gi l i các thao tác vào/ra m c th p đ duy trì tính k

th a và kh n ng t ng thích.

– C++ bao trùm lên C, ngoài các ph ng th c m i, v n s d ng l i các thao tác vào/ra c a C.

G n g i v i các thao tác truy xu t c a máy:

Trang 14

5.2 Thao t¸c vµo/ra tÖp møc thÊp

5.3.2 Các hàm vào/ra m c th p thông d ng

– T p tin tiêu đ và bi n chu n

S d ng các t p tiêu đ : io.h, fcntl.h, errno.h, sys/stat.h, dos.h, …

– S d ng bi n chu n (c a Turbo C) _fmode cho phép xác đ nh ki u

nh p/xu t (nh phân hay v n b n).

Vào/ra s d ng th t p:

– H th ng vào/ra m c II s d ng kênh xu t/nh p và con tr t p.

– Các hàm thông d ng:

open, close: m , đóng t p (s d ng các ch đ truy nh p).

_open, _close: liên quan t i DOS.

read, write: đ c, ghi d li u.

lseek: truy nh p t p theo ch m c.

unlink: xóa t p.

Cách s d ng: xem TLTK.

– Các hàm khác: xem TLTK.

Trang 15

5.4 Giao tiÕp víi hÖ thèng

5.4.1 Giao ti p v i h th ng s d ng th vi n dos.h

– Khái ni m chung

T p h p thanh ghi c a b VXL 8086

– Thanh ghi công d ng chung (16 bit) : AX, BX, CX, DX.

Phân thành các thanh ghi 8 bit : AH, AL; BH, BL; CH, CL; DH, DL.

– Thanh ghi đo n (16 bit): l u gi con tr đo n (CS, DS, SS, ES) – Thanh ghi đ l ch (16 bit): l u gi con tr đ l ch (IP, SP, BP, SI,DI)

Thanh ghi IP ph i h p v i các thanh ghi đo n å đ a ch b nh ki u

đo n:đ l ch (segment : offset).

– Thanh ghi c (flag): ch a 9 c (m i c 1 bit): O, D, I, T, S, Z, A, P, C.

Trang 16

5.4 Giao tiÕp víi hÖ thèng

Trang 17

5.4 Giao tiÕp víi hÖ thèng

5.4.1 Giao ti p v i h th ng s d ng th vi n dos.h

– Ng t và x lý ng t (ti p)

Th t u tiên c a ng t:

– Ng t có th tr u tiên cao s đ c CPU th c hi n tr c.

u tiên cao nh t dành cho ng t không che đ c (NMI) Ng t lo i này

c nh báo CPU v m t l i ph n c ng nghiêm tr ng.

B ng véct ng t:

– B ng véct ng t (IVT) ch a đ a ch c a thao tác s đ c th c hi n (khi

ng t t ng ng đ c sinh ra) Chi ti t h n xem TLTK.

– Có t t c 256 ng t, m i ng t chi m 4 byte b nh å t ng c ng 1KB Chúng chi m đ a ch t 0x00 đ n 0xFF.

– Có th có nhi u d ch v con g n v i m t ng t, chúng c ng đ c đánh

s trong h 16.

Trang 18

5.4 Giao tiÕp víi hÖ thèng

nh nhau trên t t c các máy PC (k t qu cu i cùng là nh nhau).

– DOS (c ng nh các H H khác) cung c p các hàm m c cao (m c

c s trên các d ch v c a BIOS, chúng ph c t p h n và có nhi u ch c

n ng h n (T t nhiên chúng ph i g i t i các hàm c a BIOS đ hoàn thành công vi c c a mình).

Trang 19

5.4 Giao tiÕp víi hÖ thèng

m i ng t ; th c hi n câu l nh g i ng t theo s hi u ng t ; l y k t qu

do ng t sinh ra (tham s đ u ra) t các thanh ghi.

– Có 2 ph ng pháp ch y u đ g i ng t : (s d ng các hàm khác nhau trong th vi n dos.h).

Ph ng pháp g i ng t dùng hàm geninterrupt :

– S d ng các bi n gi thanh ghi: _FLAGS, _AX, _AH, _AL, _BX, … – G i hàm : void geninterrupt ( int sh_ng t );

Trang 20

5.4 Giao tiÕp víi hÖ thèng

5.4.1 Giao ti p v i h th ng s d ng th vi n dos.h

– X lý ng t m m (ti p)

Ph ng pháp g i ng t dùng các hàm int86, int86x, intdos, intdosx :

– S d ng các c u trúc, h p: BYTEREGS, WORDREGS, REGS, SREGS,

REGPACK.

int int86x ( int sh_ng t, REGS *v, REGS *r, SREGS *s);

S d ng hàm void segread (SREGS *s) đ đ t n i dung các thanh ghi đo n vào

c u trúc s (th ng dùng đ chu n b cho hàm int86x)

int intdosx (REGS *v, REGS *r, SREGS *s);

DOS thông qua giá tr c a v->h.ah ).

Th c ch t các hàm này là hàm int86 (int86x) v i s hi u ng t là 0x21.

S d ng hàm void intr ( int sh_ng t, REGPACK *reg) đ th c hi n ng t sh_ng t

Các tham s vào/ra đ u đ c xác đ nh qua reg.

Trang 21

5.4 Giao tiÕp víi hÖ thèng

5.4.1 Giao ti p v i h th ng s d ng th vi n dos.h

– X lý ng t m m (ti p)

M t s l u ý:

– Các hàm int86x và intdosx khác các hàm int86 và intdos ch chúng

có th truy nh p vào d li u m t đo n khác.

– Nên s d ng các hàm int86 (int86x) ho c intdos (intdosx) vì chúng

ch can thi p gián ti p vào các thanh ghi c a CPU å an toàn h n hàm

Trang 22

5.4 Giao tiÕp víi hÖ thèng

Trang 23

5.4 Giao tiÕp víi hÖ thèng

Cung c p các d ch v truy nh p t i chúng cho các ng d ng Vi c cung

c p này đ c th c hi n thông qua API.

i v i l p trình viên, m i H H đ c đ nh ngh a b i API c a nó.

Application Programming Interface : Giao di n l p trình ng d ng.

– API là t p h p các ki u d li u, hàm và đ nh ngh a hàm đã đ c H H thi t k s n.

Trang 24

5.4 Giao tiÕp víi hÖ thèng

5.4.2 Giao ti p v i h th ng s d ng API

– API và Windows API (ti p)

API – Application Programing Interface:

– Cung c p ti n ích đ ng d ng có th truy nh p vào h th ng.

– API th ng đ c vi t b i ngôn ng dùng đ vi t H H.

Ví d , MS-DOS đ c vi t b ng h p ng å đ nh ngh a giao di n m c

h p ng : n p giá tr vào thanh ghi và g i ng t.

– Tuy v y c ng có các API khác cho các ngôn ng khác mà b n thân

chúng l i g i t i t p API c s

Ví d các hàm C trong th vi n C cung c p các d ch v DOS qua ng t INT 0x21, các d ch v t ng ng c a DOS đ c g i tùy thu c vào giá tr

đ t vào thanh ghi.

Ví d khác v API : UNIX đ c vi t b ng C å cung c p m t th vi n hàm C JavaOS đ c vi t b ng Java å cung c p t p h p các l p Java.

Trang 25

5.4 Giao tiÕp víi hÖ thèng

5.4.2 Giao ti p v i h th ng s d ng API

– API và Windows API (ti p)

Windows API:

– Là h th ng g m nhi u ki u d li u và hàng nghìn hàm khác nhau – Cung c p cho ng d ng giao di n đ h a, hi n th hình nh, v n b n

đa đ nh d ng, qu n lý các đ i t ng h th ng nh b nh , t p, ti n trình, …giúp cho vi c phát tri n ng d ng trong môi tr ng Windows

Trang 26

5.4 Giao tiÕp víi hÖ thèng

– Th vi n đi u khi n chung:

Giúp cho giao di n ng d ng nh t quán, gi m b t th i gian, công s c xây d ng các đi u khi n.

– Giao di n thi t b đ h a:

Cung c p các hàm và c u trúc liên quan đ xu t ra màn hình, máy in và các thi t b khác.

Trang 27

5.4 Giao tiÕp víi hÖ thèng

5.4.2 Giao ti p v i h th ng s d ng API

– S d ng Windows API (ti p)

Các nhóm ch c n ng trong Windows API (ti p):

– Các d ch v m ng:

Cho phép giao ti p gi a các ng d ng trên các máy tính khác nhau trên

m ng, t o, qu n lý các k t n i đ chia s tài nguyên (th m c, máy in

Cho phép s d ng các ng d ng m t cách th ng nh t, ti n l i cho truy

nh p, qu n lý.

Trang 28

5.4 Giao tiÕp víi hÖ thèng

5.4.2 Giao ti p v i h th ng s d ng API

– S d ng Windows API (ti p)

Các ki u d li u trong Windows API:

– Là các ki u d li u đ n gi n, đ c Windows API h tr , s d ng đ

đ nh ngh a các giá tr hàm tr v , tham s và thông đi p hàm, các thành ph n c u trúc.

– Windows API đ nh ngh a kích th c và ý ngh a c a các thành ph n này, s d ng th (handle) đ tham chi u t i m t tài nguyên.

Trang 29

5.4 Giao tiÕp víi hÖ thèng

Ngày đăng: 06/08/2014, 01:20

TỪ KHÓA LIÊN QUAN