You are on page 1of 117

NGN NG LP C

Gio vin

V Vn nh
Ngn ng lp trnh C - Smith.N Studio! 1

Bi 1: Tng quan v ngn ng lp trnh C

Ngn ng C c mt s cc c im ni bt sau :
B lnh ph hp vi phng php lp trnh cu trc. Kiu d liu phong ph. Mt chng trnh C bao gi cng gm mt hoc nhiu hm v cc hm ri nhau. L ngn ng linh ng v c php, chp nhn nhiu cch th hin chng trnh .

Ngn ng lp trnh C - Smith.N Studio! 2

I. Hng dn s dng mi trng kt hp Turbo C 1. Khi ng


C1: T DOS [ ng dn ]\ TC.EXE C2: T Win C -> TC -> BIN -> TC.EXE C3: Start -> Run -> C:\TC\BIN\TC.EXE
2.

3.

M File M file mi : File -> New M file c: File -> Open Ghi File Save (F2) : Ghi tp mi ang son tho vo a Save as : Ghi tp ang son tho vo a theo tn mi hoc e ln tp c
Ngn ng lp trnh C - Smith.N Studio! 3

Chy mt chng trnh


F9 : Bin dch Ctrl F9 : Thc thi chng trnh Alt F5 : Xem kt qu

Thot khi C
Thot tm thi v DOS : Dos Shell Thot hn khi C: File \ Quit ( Alt + X)

Ngn ng lp trnh C - Smith.N Studio!

II. Gii thiu ngn ng lp trnh C


1. Cc thnh phn ca NNLT C

Tp cc k t

Ch ci: A .. Z, a .. z Ch s : 0..9 K hiu ton hc : +-*/=() K t gch ni: _ Cc k hiu c bit khc nh : . , ; : [ ] { } ? ! \ & | % # $, L nhng t c mt ngha hon ton xc nh Asm, char, do, int, float, for, do, While, Dng xc nh cc i lng khc nhau trong mt chng trnh Bt u bng ch ci hoc gch ni di cc i mc nh l 32
Ngn ng lp trnh C - Smith.N Studio! 5

T kho

Tn

2. Cc kiu d liu c s trong C Kiu s k t (char) Kiu s nguyn (int) Kiu du phy ng (chnh xc n (float), chnh xc kp (double)) Kiu void

Ngn ng lp trnh C - Smith.N Studio!

2.1 Kiu k t (char) Mt gi tr kiu k t (char) chim 1 byte trong b nh v biu din mt k t thng qua bng m ASCII. V d K t 0 1 2 A a
Ngn ng lp trnh C - Smith.N Studio!

M ASCII 48 49 50 65 97
7

Trong ngn ng C cung cp hai kiu k t (char) l signed char v unsigned char Phm vi signed char unsigned char S k t -128..127 0..255 Kch thc 1 byte 1 byte

V d :

char ch, ch1;

ch= a ; ch1= 97;

Ngn ng lp trnh C - Smith.N Studio!

2.2 Kiu s nguyn (int) Kiu s nguyn trong C gm cc kiu sau: Kiu
int

Phm vi biu din Kch thc


-32768 -> 32767 2 byte

Unsigned int

0 -> 65535
-2147483648 -

2 byte
4 byte

4 byte

Ngn ng lp trnh C - Smith.N Studio!

2.3 Kiu s thc hay cn gi l kiu du phy ng

Kiu
float double laong double

Phm vi biu din


3.4-38E -> 3.4E+38 1.7E-308 -> 1.7E+308

S ch s Kch c ngha thc


7-8 15-16 4 byte 8 byte 10 byte

3.4E-4932 -> 1.1E+4932 17-18

Ngn ng lp trnh C - Smith.N Studio!

10

3 Hng v bin 3.1 Hng: Khi nim: hng l gi tr bt bin trong chng trnh khng thay i, khng bin i v mt gi tr. Cc loi hng c s dng trong C tng ng vi cc kiu d liu nht nh Trong C c ba loi hng :

Hng s Hng chui Hng k t

Ngn ng lp trnh C - Smith.N Studio!

11

Hng s: l cc gi tr s xc nh, c th l kiu


nguyn hay kiu thc Hng nguyn: Gi tr ch bao gm cc ch s, du +, c lu tr theo kiu int. V d: 12,-12 Nu gi tr vt qu min gi tr ca int hoc c k t l (hay L ) theo sau gi tr th lu theo kiu long int. V d: 43L hoc 43l l hng nguyn lu theo kiu long int. Hng thc: Trong gi tr c du chm thp phn, hoc ghi di dng s c m, v c lu theo kiu float, double, long double. V d: 1.2 , 2.1E -3 (2.1E3=0.0021) hoc 3.1e-2 (3.1e-2=0.031).

Ngn ng lp trnh C - Smith.N Studio!

12

Hng k t

Mt hng kiu k t c vit trong du ngoc n (' ) nh 'A' hoc 'z'. Hng k t 'A' thc s ng ngha vi gi tr nguyn 65, l gi tr trong bng m ASCII ca ch hoa 'A' (Nh vy gi tr ca hng chnh l m ASCII ca n). i vi mt vi hng k t c bit, ta cn s dng cch vit thm du \ , nh '\t' tng ng vi phm tab: Hng k t c th tham gia vo php ton nh mi s nguyn khc: VD: '8' - '1'= 56-49=7.

Ngn ng lp trnh C - Smith.N Studio!

13

Cch vit
\n \t \o

K t
Xung hng Tab nul tng ng vi gi tr nguyn 0 trong bng m ASCII Backspacse V u dng Sang tri \
Ngn ng lp trnh C - Smith.N Studio! 14

\b \r \f \\ \ \

Hng chui

L chui k t nm trong cp du nhy kp " ". Cc k t ny cng c th l cc k t c biu din bng chui thot. V d: "Turbo C", "Ngn ng C++ \n\r" Mt hng chui c lu tr tn cng bng mt k t Nul (\0), v d chui "Turbo C" c lu tr trong b nh nh sau: T u r b o C \0

Ngn ng lp trnh C - Smith.N Studio!

15

Cch nh ngha hng s dng trong chng trnh Vi cc gi tr hng thng c dng trong mt chng trnh ta nn nh ngha u chng trnh (sau cc dng khai bo nhng th vin chun) theo c php: #define <tn hng> <gi tr> V d: #define PI 3.1415

Ngn ng lp trnh C - Smith.N Studio!

16

3.2 Bin - Cch khai bo: Mi bin trong chng trnh u phi c khai bo trc khi s dng vi c php khai: Kiu d liu <danh_sch_tn_bin>; Lu : nu c nhiu tn bin th gia cc tn bin phi c du , ngn cch V d: int a,b; float x; - Khi u cho cc bin Ngay trn dng khai bo ta c th gn cho bin mt gi tr. Vic lm ny gi l khi u cho bin. V d: int a,b=6,d=1;
Ngn ng lp trnh C - Smith.N Studio! 17

Cch truy xut n a ch ca bin Mt s hm ca C dng n a ch ca bin v d nh hm scanf. nhn a ch ca bin dng ton t: & V d: &tn_bin - &a : a ch ca bin a

Ngn ng lp trnh C - Smith.N Studio!

18

3.3 Cu trc tng qut ca chng trnh C


Mt chng trnh C chun gm c cc thnh phn sau: Cc ch th tin bin dch Khai bo cc kiu d liu mi Khai bo hng, khai bo bin Khai bo hm Chng trnh chnh

1. 2. 3. 4. 5.

Ngn ng lp trnh C - Smith.N Studio!

19

1.

2.

3.
4. 5.

Ch th tin bin dch: gip trnh bin dch thc hin mt s cng vic trc khi thc hin mt s cng vic trc khi thc hin bin dch chnh thc VD: #include <stdio.h>; #include <conio.h>; Khai bo kiu d liu mi: dung t kho typedef. VD: typedef int songuyen; typedef float mang[10]; Khai bo hng v bin: khai bo cc hng s v bin dng trong chng trnh Khai bo hm: khai bo cc hm t vit Chng trnh chnh: hm main l hm bt buc trong chng trnh. Hm main c th tr v gi tr kiu nguyn (int) hoc khng tr v gi tr no (void)
Ngn ng lp trnh C - Smith.N Studio! 20

/* Chng trnh in ra dng ch Trung tm o to Tr c trn mn hnh */ # include <stdio.h> void main () /* Ham chinh */ { printf(" \n Trung tm o to Tr c "); /*xuong dong in chu Trung tm o to Tr c */ }

Ngn ng lp trnh C - Smith.N Studio!

21

* Chng trnh tnh chu vi v din tch hnh trn, bit bn knh r l mt hng s c gi tr =3.1 */ # include <stdio.h> /* khai bo th vin hm nhp xut chun */ # include <math.h> /* khai bo th vin hm ton hc */ #define r 3.1 void main () { float cv,dt; /* khai bao bien chu vi va dien tich kieu so thuc */ cv=2*r*M_PI; /* tinh chu vi */ dt=M_PI*r*r; /* Tinh dien tich */ printf("\nChu vi = %10.2f\nDien tich = %10.2f",cv,dt); /* In ket qua len man hinh */ getch(); /* Tam dung chuong trinh */ }
Ngn ng lp trnh C - Smith.N Studio! 22

*Chng trnh ny minh ha cch va khai bo, va khi u mt bin trong C */ #include <stdio.h> void main() { char ki_tu = 'a'; /* Khai bo/khi u k t. */ int so_nguyen = 15; /* Khai bo khi u s nguyn */ float so_thuc = 27.62; /* Khai bo/khi u s thc/ printf("%c la mot ki tu.\n",ki_tu); printf("%d la mot so nguyen.\n",so_nguyen); printf("%f la mot so thuc.\n",so_thuc); }

Ngn ng lp trnh C - Smith.N Studio!

23

Bi 2: Biu thc v cc php ton

I. Biu thc
L s kt hp cc php ton v cc ton hng din t mt cng thc ton hc no . Biu thc trong C gm c biu thc ton hc v biu thc logic

Biu thc ton hc bao gm cc php ton s hc v cc hng, cc bin, cc hm Biu thc logic bao gm cc bin, hng, hm v php ton logic (!: php ph nh, &&: php v, || : php hoc)

Ngn ng lp trnh C - Smith.N Studio! 24

II. Cc php ton

Php ton s hc Php ton ngha + Cng Tr * Nhn / Chia % Ly phn d Ch : -Php ton chia 2 s nguyn s cht ct phn thp phn. -Php ton ly phn d khng p dng cho cc gi tr float v double
Ngn ng lp trnh C - Smith.N Studio! 25

II. Cc php ton

Php ton quan h


Php ton ngha V d > C ln hn khng? a>b >= C ln hn hay bng khng? a>=b < C nh hn khng? a<b <= C nh hn hay bng khng? a<=b == C bng hay khng? a==b != C khc nhau khng? a!=b Cc php ton quan h c u tin thp hn so vi cc php ton s hc
Ngn ng lp trnh C - Smith.N Studio! 26

II. Cc php ton

Php ton logic


Php ph nh ! Php v (AND) && Php hoc (OR) ||

Cc php ton quan h c u tin nh hn so vi ! nhng ln hn so vi php && v ||

Ngn ng lp trnh C - Smith.N Studio!

27

Cu lnh gn v biu thc C php ca lnh gn: <tn bin> = <biu thc>; VD: x = -10; m = y + 2 m; Trong C cho php ngi s dng c gp lnh gn theo c php : a = b = c = 7;

Ngn ng lp trnh C - Smith.N Studio!

28

Php ton tng gim Ton t + + : dng tng gi tr ca cc bin nguyn hay bin thc Ton t - - dng gim gi tr ca bin nguyn hay bin thc Ton t + + v -- u c th ng trc hoc sau ton hng VD: + + n ; n+ +; --m ; m--; Khi cc ton t + +, -- ng trc ton hng th gi tr ca ton hng c tng hoc gim trc khi s dng v ngc li nu ton t ++, -- ng sau ton hng th ton hng c tng hay gim sau khi thc hin
Ngn ng lp trnh C - Smith.N Studio! 29

Chuyn i kiu gi tr
Vic chuyn i kiu gi tr trong C thng din ra t ng trong trng hp sau: Trong biu thc c cc ton hng khc kiu Khi gn mt gi tr kiu ny cho mt gi tr kiu khc Ngoi ra ta c th dng php chuyn kiu p kiu d liu sang kiu khc (type) biu_thc Ch : - Khi chuyn i kiu tng biu thc th i vi ton hng c kiu thp hn s c nng thnh kiu cao hn trc khi htc hin php ton v kt qu thu c s c kt qu theo kiu cao hn
Ngn ng lp trnh C - Smith.N Studio! 30

Kiu int v kiu long th int ----> long int v float th int ---> float Float v double th float -----> double Kiu int c th chuyn thnh float v ngc li

Ngn ng lp trnh C - Smith.N Studio!

31

Bi 3 Cc hm vo ra d liu
I. Hm xut nhp chun trong th vin <stdio.h> Hm a kt qu ra mn hnh C php: printf(<dng iu khin>, bt1, bt2,...btk); ngha: bt1,...btk : l k biu thc cn in kt qu ra mn hnh <dng iu khin> l mt hng xu k t bao gm 3 loi: K t diu khin vic xung dng tip theo \n K t hin th: l k t c in ra mn hnh K t m t cch a ra mn hnh ca cc bin(c t ca kiu). Mi biu thc Smith.Nc t tng ng c Studio! Ngn ng lp trnh C 32

c t kiu nguyn i vi biu thc c gi tr kiu s nguyn %[n]d . Trong n l s nguyn xc nh rng ti thiu dnh cho gi tr biu thc in ra mn hnh c t kiu s thc %[n][.m]f. Trong m l s ch s sau du phy, n l mt s nguyn xc nh rng ti thiu trn mn hnh cho gi tr ca biu thc: VD:

Ngn ng lp trnh C - Smith.N Studio!

33

%c : in mt k t c m ASCII tng ng %[n]d : in mt s nguyn vi chiu di ti thiu l n %[n]ld: in mt s nguyn (long int) %[n.m]f : in mt s thc vi chiu di n v ly m s thp phn %s : in ra chui k t

Ngn ng lp trnh C - Smith.N Studio!

34

Hm hin th mt xu k t ra mn hnh C php: int puts(char *s); ngha: Hin th mt xu k t s ln mn hnh, sau khi in xong th con tr s c chuyn xung dng. Trong s l con tr kiu char tr ti vng cha xu k t Hm a mt k t ra mn hnh C php: int putchar(int ch); ngha: Hm s k t ch ra mn hnh vi ch l m ca l t cn in

Ngn ng lp trnh C - Smith.N Studio!

35

Hm nhn d liu t bn phm C php: scanf(dt1dt2..dtk, &bin1, ...&bink); ngha:

dt1,...dtk l mt hng xu k t c t ca k bin &bin1, ..&bink: l a chca bin trong b nh

Hm nhn t bn phm mt xu k t C php: int *getchar(char *s); ngha:

Hm nhn dy k t t bn phm vo cho n khi gp k t \n th dng li s l con tr tr ti vng nh s cha xu va nhn

Ngn ng lp trnh C - Smith.N Studio! 36

Hm nhn mt k t t bn phm C php: getchar(void); ngha: nhn k t c nhp t bn phm

Ngn ng lp trnh C - Smith.N Studio!

37

II. Hm xut nhp chun trong th vin <conio.h> Hm getch() v getche C php : int getch( void )

int getche( void )


- Hai hm trn ch nhn mt k t trc tip t b m bn phm. Nu b m rng th ch. Khi mt phm c n th nhn ngay k t m khng cn phi enter nh cc hm nhp t stdio.h - Hm getche() cho hin k t ln mn hnh cn getch() th khng - Kt qu tr v ca hm l k t c n trn bn phm.

Ngn ng lp trnh C - Smith.N Studio!

38

Xut k t c mu C php : cprintf ngha: in ra k t c mu c n nh bi hm textcolor. Nhp k t c mu C php: cscanf ngha: + Ni dung nhp c mu c n nh bi hm textcolor + Nhn ni dung trc tip t b m bn phm. V vy vi hm cscanf ta cng phi kh k t \n trong b m bng %*c hoc bng hm getch()

Ngn ng lp trnh C - Smith.N Studio! 39

III.Mt s hm thao tc trn mn hnh Hm xa mn hnh: clrscr(); C tc dng xa ton b m n hnh v sau khi xa con tr s v tr gc pha bn tri. Hm t ta con tr: gotoxy(int x, int y); t con tr ti v tr x, y

Hm t mu nn textbackground
void textbackground(int color); t mu nn Color l mt biu thc nguyn c gi tr t 0 n 7 tng ng vi mt trong 8 hng s mu u tin ca bng mu vn bn.
Ngn ng lp trnh C - Smith.N Studio! 40

Hm t mu ch textcolor void textcolor(int newColor); La chn mu k t mi newColor.Trong newColor l mt biu thc nguyn c gi tr t 0 n 15 tng ng vi mt trong cc hng s mu ca bng mu vn bn.

Ngn ng lp trnh C - Smith.N Studio!

41

Bi 4: Cu trc iu khin

Cu lnh, khi lnh


Cu lnh: mi cu lnh thc hin mt cng vic v c kt thc bi du ; Khi lnh: l tp hp cc cu lnh bt u bng du { v kt thc bng du }

Ngn ng lp trnh C - Smith.N Studio!

42

I. Cu trc iu khin if
1. Cu trc if dng 1
C php: if (bt) s; ngha: bt l biu thc lgic, s l lnh n hoc lnh phc. nu bt nhn gi tr true th thc hin s, ngc li s c b qua 2. Cu trc if dng 2 C php: if(bt) s; else s1 ; ngha: bt l biu thc lgic, nu bt nhn gi tr true th thc hin s b qua s1, ngc li nu bt nhn gi tr flase th thc hin s1 b qua s(s v s1 c th l lnh n hoc lnh phc)
Ngn ng lp trnh C - Smith.N Studio! 43

Ch : trong C cho php s dng cc cu trc if lng nhau gii quyt bi ton 3. Bi tp - Nhp 2 s thc a, b t bn phm. Tm v in ra mn hnh s ln nht v s b nht - Gii h phng trnh bc nht hai n s ax + by = c dx + ey = f

Ngn ng lp trnh C - Smith.N Studio!

44

II. Cu trc r nhnh switch


1. Cu trc tng qut C php: switch (bt)

case n1 : s1 case n2 : s2 .... case nk : sk [default : s(k+1 )]

Ngn ng lp trnh C - Smith.N Studio!

45

ngha: Bt: l biu thc ton hc c gi tr kiu nguyn Ni(i=1..k): l cc s kiu nguyn, kiu hng k t, hoc biu thc Si(i=1..k): l cc lnh n hoc lnh phc [default : s(k+1 )] : l phn tu chn c th c hoc khng

Ngn ng lp trnh C - Smith.N Studio!

46

Hot ng: lnh switch ph thuc vo gi tr ca biu thc bt vit sau switch, nu: Gi tr bt = ni th thc hin cu lnh sau case ni; Khi gi tr biu thc khc tt c cc ni th thc hin cu lnh sau default nu c, hoc thot khi cu lnh switch. Khi chng trnh thc hin xong cu lnh ca case ni no th n s thc hin lun cc lnh thuc case bn di n m khng xt li iu kin ( do cc ni cn c xem nh cc nhn). V vy, chng trnh thot khi lnh switch sau khi thc hin xong mt trng hp, ta dng lnh break.

Ngn ng lp trnh C - Smith.N Studio!

47

3. Bi tp Vit chng trnh nhp vo t bn phm mt m s nguyn v a ra nh ga trnh theo yu cu: 1: trnh s cp 2 : trnh trung cp 3: trnh i hc 4: trnh Cao hc 5: trnh Tin s Cc s khc: Khng xc nh - Cho mt s t nhin, in ra mn hnh tn gi ca s ln mn hnh(Bi s 12)

Ngn ng lp trnh C - Smith.N Studio!

48

III. Cu lnh lp for


1. C php: for(<bt1> ; <bt2> ; <bt3>)

S;

ngha: S l lnh n hoc lnh phc bt1 : thng l mt lnh gn khi to cho bin iu khin bt2: l biu thc logic, gi tr ca biu thc lgic ny quyt nh vng lp tip tc hay kt thc bt3: thng l lnh gn c tc dng lm thay i gi tr ca bin iu khin

Ngn ng lp trnh C - Smith.N Studio!

49

Hot ng: Bc 1: Thc hin bt1 Bc 2: Tnh ton, xc nh gi tr ca bt2 Bc 3: Nu bt2 c gi tr false th thot khi vng lp. Ngc li bt2 c gi tr true th s c thc hin Bc 4: sau khi thc hin s thc hin bt3 v quay li bc 2 Nhn xt: <t1> ch c thc hin duy nht mt ln khi bt u vng lp <bt2>, <bt3> v S c th c tnh ton v thc hin lp nhiu ln
Ngn ng lp trnh C - Smith.N Studio! 50

Ch khi s dng vng lp for <bt1>, <bt2>, <bt3> u c th vng mt nhng vn phi gi li du ( ; ) Trng hp c bit <bt2> khng c th lun c xem l nhn gi tr true, mun thot khi vng lp phi dng lnh break, goto hoc return C th dng cu trc cc vng for lng nhau Khi gp lnh break th chng trnh s thot khi vng for su nht cn cha lnh break Trong vng for c th s dng lnh continue chuyn ti chu trnh mi ca vng lp

Ngn ng lp trnh C - Smith.N Studio!

51

2. Bi tp Vit chng trnh tnh tng ca n s u tin ca dy s sau: S = 1+1/2+1/3+1/4+...+1/n. Vit chng trnh tm tt c cc s nguyn c ba ch s sao cho tng tam tha ca ba ch s hng trm, hng chc, hng n v s bng s nguyn . V d: 13+53+33=153

Ngn ng lp trnh C - Smith.N Studio!

52

IV. Cu lnh while


1.

C php : While (bt) S; ngha: bt l biu thc lgic, S l mt lnh hoc mt dy lnh Hot ng Xc nh gi tr ca bt. Nu gi tr ca bt= true(<>0) th chuyn sang bc 2, ngc li th thot khi vng lp Thc hin S sau quay v bc 1(Lnh S c th c thc hin nhiu ln hoc khng c thc hin ln no nu bt =false ngay t u)

Ngn ng lp trnh C - Smith.N Studio!

53

Ch : trong cu lnh lp while ta c th dng cu lnh break thot khi vng lp theo mun 2. Bi tp : - Nhp hai s nguyn t bn phm, tm v in ra mn hnh c s chung ln nht ca hai s - Tm hnh ch nht c din tch ln nht khi bit chu vi ca n(bi s 25)

Ngn ng lp trnh C - Smith.N Studio!

54

V. Cu lnh do.. while


1.

C php

do S while (bt); ngha: S l mt cu lnh n hoc phc, bt l biu thc lgic Hot ng: (1) Thc hin lnh S (2) Xc nh gi tr ca bt. Nu gi tr ca bt = true th chuyn sang bc (1), ngc li th thot khi vng lp Lnh S lun c thc hin t nht 1 ln trong cu lnh

Ngn ng lp trnh C - Smith.N Studio!

55

Bi 5: D liu kiu mng


1.

Khi nim: Mng c hiu l mt tp hp cc gi tr c cng kiu d liu nm lin tip nhau trong b nh my tnh Mng c coi nh mt bin mng v tn mng c t theo quy tc t tn bin Mng c nhng thnh phn sau: Kiu d liu ca cc phn t trong mng Tn mng S chiu v kch thc ca mi chiu
Ngn ng lp trnh C - Smith.N Studio! 56

2. Cch khai bo bin mng <kiu_dl> <tn_mng><ds cc chiu ca mng> VD: int A[10]; //mng 1 chiu A gm 10 phn t kiu s nguyn float B[2] [3]; // Mng 2 chiu B gm 2 hng v 3 ct, cc phn t c kiu s thc

Ngn ng lp trnh C - Smith.N Studio!

57

3. Cch t chc v truy xut n phn t mng Phn t ca mng c xc nh thng qua ch s. Ch s ca phn t trong mng lun l mt s nguyn khng vt qua kch thc ca mng Cc phn t ca mng c sp xp lin nhau trong b nh ca my tnh v ch cho php truy cp n a ch trc tip ca phn t i vi mng mt chiu. Cch truy cp theo a ch &tn_bin[i] trong i l ch s ca phn t VD: a= &a[0] //Tn mng ch ti a ch phn t u tin ca mng
Ngn ng lp trnh C - Smith.N Studio! 58

4. Cch xut nhp d liu trn mng - Nhp xut trc tip ng dng cho mng mt chiu v mng hai chiu c phn t kiu int thng qua a ch - Nhp d liu cho mng for( i=0;i<5;i++) { printf(Phan tu thu %d= ,i); scanf(%d, &a[i]); } - In cc phn t ca mng ra mn hnh for(i=0;i<n;i++) printf(%6d,a[i])

Ngn ng lp trnh C - Smith.N Studio!

59

Nhp xut d liu gin tip thng qua mt bin trung gian i vi mng mt chiu v mng a chiu for(i=0;i<2;i++) for(j=0;j<3;j++) { printf(a[%d,%d], i, j); scantf(%f,&temp); a[i] [j] = temp; } - Bi tp - Nhp vo t bn phm n s nguyn, tm v in ra mn hnh s nguyn ln nht v s nguyn nh nht - Nhp ma trn cc s thc kch thc n hng v m ct. Tm v in ra s thc ln nht trong ma trn
Ngn ng lp trnh C - Smith.N Studio! 60

Bi 6: Con tr
1. -

Khi nim con tr v a ch a ch: Da vo kiu d liu khi khai bo bin my s cp pht cho bin mt a ch lu tr bin trn vng nh. Mi bin c kiu khc nhau th c lu vo cc a ch khc nhau Con tr l mt bin dng cha a ch. Mi loi a ch th c loi con tr tng ng. Trc khi s dng bin con tr ta phi khai bo trc khi s dng Khai bo: <kiu_DL> * <tn_bin_con_tr>; VD1: int x, y, *p, *c; x, y l hai bin kiu nguyn, p, c l hai bin con tr kiu nguyn
Ngn ng lp trnh C - Smith.N Studio! 61

VD2: float *t, *d ; //Khai bo bin con tr t v d c kiu thc Bin con tr c dng theo hai trng hp sau: Tn con tr ch n a ch ca bin c lu trong con tr: float a,*p,*q; p=&a; /* lu a ch ca bin a vo con tr p */ q= p; /* lu a ch trong p vo con tr q*/

Ngn ng lp trnh C - Smith.N Studio!

62

Dng khai bo ca con tr ch n gi tr lu ti vng nh m con tr tr ti. VD: float x=5, y , z=20, *px, *pz;,*py; px=& x; /* khi *px = x =5*/ pz=&z; /* *pz=z=20*/ khi ba biu thc sau l tng ng: y=3*x+z; *py=3*x+z; *py=3*(*px)+*pz;

Ngn ng lp trnh C - Smith.N Studio!

63

2. Con tr v mng mt chiu Cc phn t ca mng c th c xc nh thng qua con tr. Ta c khai bo : float a[10]; //Khai bo mng gm 10 phn t kiu thc Ta c tn mng chnh l mt hng a ch tr ti a ch phn t u tin ca mng v a tng ng vi &a[0] a+i tng ng vi &a[i] *(a+i) tng ng vi a[i] pa - i pa +i pa Vy
a[k-1] a[k] a[k+1]
64 Ngn ng lp trnh C - Smith.N Studio!

Cc cch vit a[i], *(a+i), *(p+i), p[i] l tng ng nhau VD: Nhp t bn phm cc phn t ca mng v tnh tng cc phn t

Ngn ng lp trnh C - Smith.N Studio!

65

#include<stdio.h> #include<stdio.h> void main() { float a[5], s ; int i; for(i=0;i<5;i++) { printf(\na[%d]= ,i); scanf(%f,&a[i]); } s=0; for (i=0;i<5;i++) s+=a[i]; printf(\n Tong =%8.2f,s); getch(); } V d: Tro1
Ngn ng lp trnh C - Smith.N Studio! 66

3. Con tr vi mng nhiu chiu Php ton ly a ch ni chung khng dng c i vi cc thnh phn ca mng nhiu chiu (tr trng hp mng hai chiu cc s nguyn). tnh ton a ch ca thnh phn a[i][j] chng ta s dng cng thc sau : (float *)a+i*n+j. a l mt hng con tr tr n cc dng ca mt ma trn hai chiu, v vy a tr n dng th nht a+1 tr n dng th hai a+2 tr n dng th ba
Ngn ng lp trnh C - Smith.N Studio! 67

tnh ton c a ch ca phn t dng i ct j chng ta phi dng php chuyn i kiu bt buc i vi a: (float * )a a l con tr tr n thnh phn a[0][0] ca ma trn. a[i][j] s c a ch l (float *a) +i*n+j Xt VD nhp gi tr ca ma trn hai chiu: Tro2

Ngn ng lp trnh C - Smith.N Studio!

68

#include <stdio.h> #include <stdio.h> void main() { float a[10][20]; int i,j,n; printf("Nhap vao kich thuoc ma tran n="); scanf("%n",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) { printf("a[%d][%d] = ",i,j); scanf("%f",(float *)a+i*20+j); } getch(); }
Ngn ng lp trnh C - Smith.N Studio! 69

4. Php ton trn con tr - Php gn: ch nn thc hin trn cc con tr c cng kiu, khi thc hin trn con tr phi thc hin php p kiu: Vd: int x; char *p; p=(char*)(&x); - Php tng gim a ch VD: float x[30], *px; px=&x[10];// p l con tr thc tr ti phn t x[10] px+i tr ti phn t x[10+i] px i tr ti phn t x[10-i]
Ngn ng lp trnh C - Smith.N Studio!

70

Php so snh: dng so snh cc con tr cng kiu, gi s p1 v p2 l hai con tr kiu float th tn ti php so snh p1 < p2 // a ch p1 tr ti thp hn a ch p2 tr ti p1==p2 5. Con tr kiu void L con tr c bit khng c kiu, n c th nhn bt k a ch no. Con tr kiu void thng dng lm i nhn bt k a ch no thng qua php p kiu trong thn hm Cc php ton tng gim a ch, so snh khng dng c con tr kiu void
Ngn ng lp trnh C - Smith.N Studio! 71

6. Mng con tr Mng con tr l mt mng m mi phn t ca n c th cha mt a ch no . Mng con tr c nhiu kiu, mi phn t ca mng kiu no th s cha a ch kiu tng ng vi n. Mng con tr c khai bo theo mu sau: <kiu Dl> *<tnmng>[N] Khi gp khai bo mng con tr th my s cp pht N khong nh lin tip cho N phn t tng ng trong mng Ch : Mng con tr khng dng lu s liu, trc khi s dng mng con tr cn gn cho mi phn t mt gi tr l a ch ca mt bin hoc ca mt phn t trong mng
Ngn ng lp trnh C - Smith.N Studio! 72

Bi 7: Hm v chng trnh
1.

Khi nim Chng trnh: Mt chng trnh C bao gm mt hoc nhiu hm. Hm main() l thnh phn bt buc ca chng trnh. Chng trnh bt u thc hin t cu lnh u tin ca hm main( ) cho n khi gp du } cui cng ca hm ny. Hm: L mt on chng trnh c lp thc hin trn vn mt cng vic ri tr v mt gi tr cho chng trnh gi n. c im ca hm: L mt n v c lp ca chng trnh. Khng cho php xy dng mt hm bn trong mt hm khc.
Ngn ng lp trnh C - Smith.N Studio! 73

Ngn ng lp trnh C - Smith.N Studio!

74

2. Quy tc xy dng hm: Mt hm gm c cc thnh phn sau - Nguyn mu ca hm: Bao gm <kiu dl ca hm> <tn hm(ds cc tham s)>; C th c hoc khng khai bo nguyn mu ca hm, khi khng khai bo nguyn mu th b bin dch s kim tra vic truyn tham s, gi tr tr v c ph hp hay khng ri mi cho thc hin hm. Tt c nguyn mu ca cc hm c trong chng trnh nn t trc hm main().

Ngn ng lp trnh C - Smith.N Studio!

75

Kiu gi tr ca hm Gi tr tr v ca hm c xc nh da vo mc ch ca hm. Nu cc hm khng tr v gi tr ta phi khai bo kiu void. Tn hm t theo qui nh i vi danh nh. Tn hm trong nguyn mu v khi khai bo phi ging nhau. Tham s ca hm Khi vit mt hm ta phi xc nh xem hm c bao nhiu tham s ? Ni dung ca hm

Ngn ng lp trnh C - Smith.N Studio!

76

Cu trc ca mt hm <Kiu tr v><Tn hm>(<ds tham s hnh thc hay i s>) { <Khai bo bin cc b>; <Cc cu lnh trong thn hm>; [return<bt tr v gi tr hm>]; }; Ch : - i vi cc hm khng c kiu tr v ta c hm kiu void - Hm khng c i th dng kiu void khai bo i. VD void bell(void) { int i; for(i=0;i<10;i++) putch(7); }
Ngn ng lp trnh C - Smith.N Studio! 77

Cch s dng hm: Hm c s dng thng qua li gi hm. <tn hm> ([ds tham s thc]) Tham s thc phi bng tham s hnh thc Kiu ca tham s thc phi ph hp vi kiu ca tham s hnh thc Hot ng ca hm khi c li gi hm Cp pht b nh cho tham s hnh thc v bin cc b Gn gi tr ca tham s thc cho tham s hnh thc Thc hin cc lnh trong thn hm Khi gp cu lnh return hoc du hiu kt thc hm th b nh s xo cc tham s hnh thc v bin cc b sau thot khi hm quay v chng trnh gi hm
Ngn ng lp trnh C - Smith.N Studio! 78

3. Cc tham s trong hm 3.1 Phn loi tham s theo cch s dng o Tham s hnh thc: Cc tham s m ta ghi trong nguyn mu hay ghi lc khai bo hm gi l tham s hnh thc. o Tham s thc:Cc gi tr, bin m ta ghi sau tn hm khi gi hm thc hin gi l tham s thc. Trong C, cc tham s thc li chia ra lm hai loi: Tham chiu: L cc tham s thc m ta truyn cho Hm di dng con tr (dng a ch). Tham chiu mi ghi nhn li c nhng kt qu va tnh ton trong Hm khi Hm kt thc. Tham tr : L cc tham s thc m ta truyn cho Hm di dng bin. Tham tr khng bo lu li nhng kt qu thay i ca n c tnh ton trong Hm khi Hm kt thc.
Ngn ng lp trnh C - Smith.N Studio! 79

3.2 Phn loi theo cng dng Tham s ca mt hm c hai cng dng: Cung cp cc gi tr cho hm khi ta gi n thc hin . Lu cc kt qu tnh ton c trong qu trnh hm hot ng Tng ng vi cng dng ta c cc loi tham s: Tham s vo: Cung cp gi tr cho hm. Tham s ra: Lu kt qu tnh ton c trong hm. Tham s va vo, va ra: va cung cp gi tr cho hm, va lu kt qu tnh ton c trong hm.

Ngn ng lp trnh C - Smith.N Studio!

80

4. Hm c i con tr i s ca hm l con tr kiu int (float,double,. ) th tham s thc tng ng phi l a ch ca bin kiu int (float,double,.). Khi a ch ca bin c truyn cho i con tr tng ng. Khi mun bo lu li kt qu tnh ton c ca cc i s trong hm s dng cho chng trnh gi hm c i s th chng ta phi khai bo i s ca hm l tham chiu (con tr hay dng a ch). VD:

Ngn ng lp trnh C - Smith.N Studio!

81

Bi 8: Chui k t
1.

Khi nim Chui k t l mt dy cc k t t trong cp du nhy kp. Chui rng c k hiu bng hai du nhy kp i lin nhau. Mt chui k t c cp pht mt khong nh cho mt mng kiu char cha cc k t ca chui v cha thm k t '\0' l k t kt thc chui. Mi k t ca chui c cha trong mt phn t ca mng. Chui k t l mt trng hp ring ca mng mt chiu khi mi thnh phn ca mng l k t Chui k t thng c khai bo theo khai bo theo hai mu: char ten_chuoi[] ; hoc char *ten_chuoi;
Ngn ng lp trnh C - Smith.N Studio! 82

2. Cc thao tc trn chui Trong C khng tn ti cc php ton so snh, gn ni dung ca chui ny cho chui khc. thc hin cc thao tc ny ta s dng mt th vin cc hm chun l <string.h>. Hm strlen: int strlen(char s[]) Tr v di ca chui s, chnh l ch s ca k t NULL trong chui. Hm strcpy: strcpy(char dest[], char source[]) Sao chp ni dung chui source vo chui dest. Hm strchr: char *strchr(char s[], char c) Tm ln xut hin u tin ca k t c trong chui s, tr v a ch ca k t ny.
Ngn ng lp trnh C - Smith.N Studio! 83

Hm strncpy: strncpy(char dest[], char source[], int n) Sao chp n k t trong chui source vo chui dest. Trong trng hp khng c n k t trong source th hm s in thm cc k t trng vo chui dest. Hm strcat : strcat(char ch1[], char ch2[]) Ni chui ch2 vo cui chui ch1. Sau li gi hm ny di chui ch1 bng tng di ca c hai chui ch1 v ch2 trc li gi hm. Hm strncat : strncat(char ch1[], char ch2[],int n) Ni n k t u tin ca ch2 vo ch1

Ngn ng lp trnh C - Smith.N Studio!

84

Hm strstr : char *strstr(char s1[], char s2[]) Tm kim chui s2 trong chui s1, Tr v a ch ca ln xut hin u tin ca s2 trong s1 hoc NULL khi khng tm thy. Hm strcmp : int strcmp(char ch1[], char ch2[]) So snh hai chui ch1 v ch2. Nguyn tc so snh theo kiu t in. Gi tr tr v: = 0 nu chui ch1 bng chui ch2 > 0 nu chui ch1 ln hn chui ch2 < 0 nu chui ch1 nh hn chui ch2 VD: m s ln xut hin ca k t a trong mt xu k t cho trc
Ngn ng lp trnh C - Smith.N Studio! 85

#include<stdio.h> #include<conio.h> #define HANG 128 void main() { char xau[HANG]; int i,na; clrscr(); printf("\nNhap mot xau ky tu:");gets(xau); na=i=0; while(xau[i]) if (xau[i++]=='a') na++; printf("\nXau co %d chu a",na); getch(); return; }
Ngn ng lp trnh C - Smith.N Studio! 86

3. Mng v chui k t Mt dng s dng con tr c bit l vic s dng mt mng cc bin con tr. Khai bo theo mu type *pointer_array[size]; VD: khai bo char *temp[10]; s khai bo mt mng 10 con tr char c th c dng khai bo mt mng lu tr a ch ca mi chui k t no . Bi tp:vit chng trnh nhp nhiu tn ngi vo t bn phm, sp xp li theo th t v in kt qu sp xp ra. + Sp xp li cc tn ny theo th t alphabet + In cc tn ra theo th t .
Ngn ng lp trnh C - Smith.N Studio! 87

VD: xt mt mng cc con tr ptr_array c gn cc a ch ca cc bin int c gi tr v v tr bt k. Dng mt hm sp xp li cc a ch ny trong mng sao cho cc a ch ca cc s b c xp trc a ch ca cc s ln hn. Lc d chng ta khng lm thay i v tr hoc thay i cc gi tr ca cc bin nhng mng vn ging nh mt mng ch n cc gi tr sp xp c th t.

Ngn ng lp trnh C - Smith.N Studio!

88

Bi tp:

Vit chng trnh m s ln xut hin ca mt k t trong mt xu k t Vit chng trnh nhp mt ch, xut ra ch nhiu ln dng con tr

Ngn ng lp trnh C - Smith.N Studio!

89

Bi 9: Cp pht v gii phng b nh ng


1.

Khi nim Bin ng: L cc bin c to ra lc chy chng trnh, ty theo nhu cu. S bin ny hon ton khng c xc nh t trc. Cc bin ng khng c tn (vic t tn thc cht l gn cho n mt a ch xc nh). Cch to ra bin ng v truy nhp n bin ng c tin hnh nh sau Vic to ra bin ng v xa n i ( thu hi li b nh) c thc hin nh cc hm nh malloc() v free() c sn trong th vin stdlib.h
Ngn ng lp trnh C - Smith.N Studio! 90

Vic truy nhp n bin ng c tin hnh nh cc bin con tr. Cc bin con tr c nh ngha nh cc bin tnh ( c khai bo ngay t u trong phn khai bo bin) v c dng cha a ch cc bin ng VD1: int *p; /* Khai bo bin con tr p*/ p= (int *) malloc(100);/* To bin ng*/ on chng trnh trn s cp pht 100 bytes trong b nh v gn a ch khi b nh ny cho p VD2: cp pht b nh chnh xc cho 70 k t: /* Khai bo bin con tr kiu char */ char *cp; /* To bin ng */ cp=(char *) malloc(70);
Ngn ng lp trnh C - Smith.N Studio! 91

2. Cp pht v gii phng b nh ng (cc hm thuc


stdlib.h v alloc.h) 2.1 Cp pht b nh ng bng hm malloc( ) C php void *malloc(kiu _dl size) Chc nng: Hm malloc cp pht mt vng nh c kch thc l size. size l mt gi tr kiu_dl (l mt kiu d liu nh sn trong th vin stdlib.h). Hm malloc tr v con tr kiu void cha a ch nh u ca vng nh c cp pht. Nu khng vng nh cp pht hm tr v gi tr NULL, v vy phi kim tra gi tr tr v khi s dng hm malloc.
Ngn ng lp trnh C - Smith.N Studio! 92

2.2 Cp pht b nh ng bng hm calloc


C php

(datatype *) calloc(n, sizeof(object)); Hm calloc cp pht b nh ng cho cc kiu d liu Trong : (datatype *) l kiu con tr tr ti kiu d liu datatype. n l s lng object thuc kiu datatype cn cp pht b nh. datatype c th l kiu d liu c s hoc kiu d liu mi

Ngn ng lp trnh C - Smith.N Studio!

93

2.3 Cp pht b nh ng bng hm relloc C php


(datatype *) realloc(buf _p, newsize); Hm c chc nng cp pht li b nh Trong : buf_p l con tr ang tr n vng nh c cp pht t trc. newsize l kch thc mi cn cp pht, c th ln hoc nh hn.

Ngn ng lp trnh C - Smith.N Studio!

94

2.4 Gii phng b nh bng hm free C php


void free( void *prt) Hm free gii phng vng nh c tr n bi con tr ptr. Nu con tr ptr = NULL th hm free khng lm g c.

Ngn ng lp trnh C - Smith.N Studio!

95

3. B nh HEAP v c ch to bin ng

Cc bin ng do malloc to ra c C xp vo mt vng nh t do theo kiu xp chng v c gi l HEAP ( b nh cp pht ng). Ngn ng C qun l HEAP thng qua mt con tr ca HEAP l HEAPPTR. N lun tr vo byte t do u tin ca vng nh cn t do ca HEAP. Mi ln gi malloc(), con tr ca HEAP c dch chuyn v pha nh ca vng nh t do mt s byte tng ng vi kch thc ca bin ng mi to ra.

Ngc li, mi khi gii phng b nh bin ng, b nh bin ng c thu hi


Ngn ng lp trnh C - Smith.N Studio! 96

Ngn ng lp trnh C - Smith.N Studio!

97

Bi 10: Kiu cu trc


1.

Kiu enum Cu lnh khai bo kiu enum c th vit theo bn cch


enum tk {pt1,pt2,...} tb1,tb2,...; enum tk {pt1,pt2,...}; enum {pt1,pt2,...} tb1,tb2,...; enum {pt1,pt2,...};

Trong : Tk l tn kiu enum (mt kiu d liu mi), pt1,pt2,... l tn cc phn t, tb1,tb2,... l tn bin kiu enum.
Ngn ng lp trnh C - Smith.N Studio! 98

V d: khai bo kiu d liu lm vic vi cc ngy trong tun ta c th dng kiu weekday v bin day nh sau: enum weekday{SUNDAY,MONDAY,TUESDAY,W EDSDAY,THURSDAY, FRIDAY, SATURDAY} day; Ch bin kiu enum thc cht l bin nguyn, n c cp pht 2 byte b nh v n c th nhn mt gi tr nguyn bt k.

Ngn ng lp trnh C - Smith.N Studio!

99

2. Kiu cu trc 2.1 nh ngha Cu trc l mt kiu d liu bao gm nhiu thnh phn c th thuc nhiu kiu d liu khc nhau. Cc thnh phn c truy nhp thng qua mt tn 2.2 C php tng qut

struct [tn_cu_trc] { khai bo cc thnh phn } [danh sch cc bin cu trc];


Ngn ng lp trnh C - Smith.N Studio!

100

trong : struct l t kha ng trc mt khai bo cu trc, tn_cu_trc l mt tn hp l c dng lm tn cu trc; [danh sch cc bin cu trc] lit k cc bin c kiu cu trc va khai bo

VD: struct hoc_sinh {


char ho_ten[20]; float diem; } hs, dshs[100];

Ngn ng lp trnh C - Smith.N Studio!

101

2.3 C php nh ngha kiu d liu mi Ngn ng C cho php ta t li tn kiu d liu mi bng cu lnh: typedef kiu__c tn_kiu_mi; trong : kiu__c l kiu d liu m ta mun i tn. tn_kiu_mi l tn mi m ta mun t.

Ngn ng lp trnh C - Smith.N Studio!

102

2.4 Nguyn tc truy cp n thnh phn ca cu trc Cc thnh phn ca cu trc c truy nhp thng qua tn bin cu trc v tn thnh phn. tn_bin_cu_trc.tn_thnh_phn truy nhp n cc thnh phn ca bin hs chng ta vit nh sau: hs.ho_ten hs.diem Ch :Khng nn s dng ton t & i vi cc thnh phn cu trc (c bit i vi cc thnh phn khng nguyn) trong khi nhp d liu

Ngn ng lp trnh C - Smith.N Studio!

103

2.5 Con tr cu trc Cch khai bo Mt bin cu trc cng l mt bin trong b nh, c th ly a ch ca mt bin cu trc bng ton t ly a ch &. Gi tr tr li l a ch n trng u ca cu trc. C th khai bo mt bin con tr ch n mt cu trc c th lu a ch ca mt bin cu trc no . C php khai bo mt bin con tr cu trc nh sau: struct tn_cu_trc *tn_con_tr; VD: struct hoc_sinh *ptrhs; Vic truy xut n mt thnh phn ca cu trc thng qua mt con tr c thc hin bng php ton kp ->
Ngn ng lp trnh C - Smith.N Studio! 104

VD: printf("\nHo va ten hoc sinh %s",ptrhs->ho_ten); printf("\nDiem %6.3f",ptrhs->diem); kt qu thc hin hai cu lnh ny tng ng vi hai cu lnh sau: printf("\nHo va ten hoc sinh %s",hs.ho_ten); printf("\nDiem %6.3f",hs.diem); Vic s dng con tr ch n cu trc thng c s dng truyn cu trc n cho mt hm Mt ng dng khc ca con tr cu trc l dng xy dng cc cu trc t tr nh: danh sch lin kt (cn gi l danh sch mc ni).
Ngn ng lp trnh C - Smith.N Studio! 105

2.6 Mng c cu trc Mng m gm cc thnh phn c kiu cu trc c gi l mng cu trc. Khai bo mt mng cc cu trc hon ton tng t nh i vi khai bo mt mng bnh thng, ch c mt im khc l thay cho tn cc kiu d liu bnh thng l mt tn kiu d liu cu trc. V d v khai bo mt mng c cu trc: struct hoc_sinh dshs[100]; //hoc_sinh l kiu cu trc Vic s dng cc mng cu trc s lm cho vic x l mt tp hp cc bin cu trc tr nn d nhn hn. Cc quy nh v mng cng c p dng i vi mng cc cu trc.
Ngn ng lp trnh C - Smith.N Studio! 106

3. Cu trc t tr Cu trc c t nht mt thnh phn l con tr ch n bn thn cu trc c gi l cu trc t tr. V d struct h_sinh{ char ho_ten[20]; float diem; } struct h_sinh *next ;/*con tr ch n hc sinh tip theo trong danh sch*/ khai bo ny nh ngha mt cu trc t tr c th dng qun l danh sch h tn hc sinh v im s hc sinh. Danh sch ny ch truy cp c theo mt chiu
Ngn ng lp trnh C - Smith.N Studio! 107

3.1 Danh sch lin kt: danh sch lin kt gm cc phn t, mi phn t c hai vng chnh: vng d liu danh sch v vng lin kt. Vng lin kt l mt hoc nhiu con tr ch n cc phn t trc hoc sau phn t ang c xem xt ty thuc vo yu cu ca cng vic c th C php chung cho khai bo danh sch lin kt s dng kiu d liu con tr nh sau: typedef struct kiu_d_liu{ <khai bo phn d liu> <khai bo cc con tr lin kt> }t_kiu_d_liu
Ngn ng lp trnh C - Smith.N Studio! 108

Bi 11: Kiu tp tin(File)

File l loi d liu c th ghi ln a dng nhiu ln.Trong C ch c mt loi File, nhng cu trc ca mi File c th khc nhau. Cu trc ny c hnh thnh khi ta ghi d liu ln File, n ph thuc vo hm m ta dng ghi d liu ln a. Trong C c hai loi hm thao tc trn file: Dng nhng hm cp thp lm vic vi tp tin thng qua mt s hiu tp tin (file handle). Dng nhng hm c xy dng t nhng hm cp thp, d s dng hn. C cc hm phc v cho vic c ghi trn tng loi d liu (s, chui, k t, cu trc...). Cc hm ny lm vic vi tp tin thng qua mt con tr tp tin. Con tr ny c xc nh khi ta m tp tin.
Ngn ng lp trnh C - Smith.N Studio! 109

Cc kiu xut nhp d liu trong tp tin 1.1 Xut nhp kiu nh phn D liu ghi ln tp tin khng b thay i v khi ng tp tin th m kt thc tp tin s c ghi ln a l -1.
1.

1.2 Xut nhp kiu vn bn Ch khc kiu nhp xut nh phn khi x l k t xung dng v khi ta ng tp tin th m kt thc tp tin s c ghi ln a l 26. Khi ghi mt k t chuyn dng ln a (m 10) s ghi thnh 2 k t m 13 v m 10. Khi c nu gp hai k t lin tip l m 10 v m 13 s gom li thnh mt k t l m 10.
Ngn ng lp trnh C - Smith.N Studio! 110

Ch : Tp tin khi ghi ln a di dng no th phi c di dng . Nu khng vic x l s khng chnh xc. Trong C c hm dng nhp xut cho c hai kiu, c hm ch dng nhp xut cho mt kiu no . 2. Cc hm thao tc trn tp tin Cc hm sau y dng chung cho c hai kiu nh phn v vn bn. 2.1 M file FILE *fopen(const char *tn_tp_tin,const char *kiu);

Ngn ng lp trnh C - Smith.N Studio!

111

M mt tp tin. Nu thnh cng tr v kt qu l con tr FILE tng ng vi file va m, ngc li tr v gi tr NULL.Sau khi m file phi kim tra xem thao tc m tp tin thnh cng hay khng. * tn tp tin: L mt hng chui, hoc mt con tr ch n vng nh cha tn tp tin. * kiu: l hng chui cho bit kiu truy nhp:

Ngn ng lp trnh C - Smith.N Studio!

112

2.2 ng file

int fclose(FILE *f) ng tp tin c ch n bi con tr f. Nu thnh cng th gi tr ca hm = 0 ngc li c gi tr EOF. Sau khi ng con tr f s khng cn tr n file trc na 2.3 Lm sch vng m int fflush(FILE *f) Lm sch vng m ca tp tin c ch n bi con tr f. Nu thnh cng cho gi tr 0, ngc li cho gi tr EOF. int flushalll(void) Lm sch vng m ca tt c cc tp tin ang m. Nu thnh cng gi tr ca hm bng s tp tin ang m, ngc li cho gi tr EOF
Ngn ng lp trnh C - Smith.N Studio! 113

2.4 Xo tp tin int unlink(const char *tn_tp_tin) Xa mt tp tin trn a. Nu thnh cng gi tr ca hm bng 0 , ngc li cho gi tr EOF 2.5 i tn tp tin int rename(const char *tn_c,const char *tn_mi) i mt tp tin trn a. Nu thnh cng gi tr ca hm bng 0 , ngc li cho gi tr EOF 2.6 Kim tra kt thc tp tin int feof(FILE *f) Cho gi tr khc khng nu cui tp tin, ngc li =0
Ngn ng lp trnh C - Smith.N Studio! 114

3. Xut nhp d liu cho file 3.1 Nhp xut k t : (file kiu nh phn v vn bn) Ghi k t ln tp tin: int putc(int ch, FILE *f) int fputc(int ch, FILE *f) Ghi ln file f k t c m = ch % 256 Nu thnh cng kt qu = m ca k t ghi, ngc li =EOF (-1) Trong trng hp ghi theo vn bn th khi gp m 10 s ghi thnh 13 v 10 c k t t tp tin: int getc( FILE *f) int fgetc( FILE *f) c mt k t t file f . Nu thnh cng kt qu = m ca k t c c, ngc li = -1
Ngn ng lp trnh C - Smith.N Studio! 115

3.2 Nhp xut chui: (Dng cho kiu vn bn) Ghi mt chui: int fputs(const char *s, FILE *f) Ghi mt chui c ch ti bi con tr s vo file f. Kt qu = k t cui c ghi nu thnh cng, ngc li =EOF c mt chui: char *fgets(const char *s, int n, FILE *f) c mt chui t File f v a vo vng nh do s tr n. Vic c kt thc khi c c n-1 k t , hoc gp k t xung dng , hoc gp k t kt thc File. Nu vic c c li kt qu ca hm =NULL.
Ngn ng lp trnh C - Smith.N Studio! 116

3.3 c ghi d liu theo khun dng: (Dng cho kiu vn bn) Ghi d liu theo khun dng: int fprintf(FILE *f , const char *c t,....) ... l danh sch cc i s tng ng vi cc c t. S dng ging nh hm printf, d liu s c ghi ln file. c d liu theo khun dng: fscanf(FILE *f , const char *c t,....) ... l danh sch cc i s tng ng vi cc c t. S dng ging nh hm scanf, d liu s c c t File f ri a vo cc i s tng ng.
Ngn ng lp trnh C - Smith.N Studio! 117

You might also like