Professional Documents
Culture Documents
Tài Liệu Lập Trình C Tiếng Việt
Tài Liệu Lập Trình C Tiếng Việt
jsp
Copyright vietjack.com
Mc lc
Gii thiu v Ngn ng C ..................................................................................................... 6
i vi c gi ...................................................................................................................... 6
iu kin tin ................................................................................................................... 6
Tng quan v Ngn ng C ................................................................................................... 6
S tht v ngn ng C ..................................................................................................... 7
Ti sao li s dng C? ...................................................................................................... 7
Chng trnh C ................................................................................................................ 8
Ci t mi trng C ............................................................................................................ 8
Ci t mi trng cc b - Local ..................................................................................... 8
Text Editor ........................................................................................................................ 8
B bin dch C .................................................................................................................. 8
Ci t trn mi trng UNIX/Linux .................................................................................. 9
Ci t trn mi trng Mac OS ....................................................................................... 9
Ci t trn Windows...................................................................................................... 10
Cu trc chng trnh C ..................................................................................................... 10
Chng trnh C: Hello World........................................................................................... 10
Bin dch & Thc thi Chng trnh C .............................................................................. 11
C php C c bn .............................................................................................................. 12
Cc Token trong C.......................................................................................................... 12
Du chm phy ; trong C ................................................................................................ 12
Comment trong C ........................................................................................................... 13
nh danh (Identifier) trong C .......................................................................................... 13
Cc t kha trong C........................................................................................................ 13
Khong trng trong C...................................................................................................... 14
Kiu d liu trong C ............................................................................................................ 14
Kiu integer..................................................................................................................... 15
Kiu du chm ng (Floating-Point) .............................................................................. 17
http://vietjack.com/ Trang chia s cc bi hc online min ph
Trang 1
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Trang 2
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Trang 3
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Con tr ti cu trc.......................................................................................................... 71
Cc trng bit - Bit Fields................................................................................................ 73
Union trong C...................................................................................................................... 73
nh ngha mt Union ..................................................................................................... 74
Truy xut thnh vin ca Union....................................................................................... 75
Trng Bit trong C.............................................................................................................. 77
Khai bo Trng Bit ....................................................................................................... 79
T kha typedef trong C ..................................................................................................... 81
typedef vs #define ........................................................................................................... 82
Input & Output trong C ........................................................................................................ 83
Cc File tiu chun ......................................................................................................... 84
Hm getchar() & putchar() .............................................................................................. 84
Hm gets() & puts()......................................................................................................... 85
Hm scanf() v printf()..................................................................................................... 86
Nhp - Xut File trong C...................................................................................................... 87
M file............................................................................................................................. 87
ng file.......................................................................................................................... 88
Ghi mt file...................................................................................................................... 89
c file............................................................................................................................ 89
Hm Nhp Xut nh phn ............................................................................................ 91
B tin x l trong C............................................................................................................ 91
V d b tin x l ........................................................................................................... 92
Cc Macro nh ngha trc ........................................................................................... 93
Ton t tin x l ............................................................................................................ 95
Phn tip tc macro (\) ........................................................................................... 95
Du thng (#) ........................................................................................................... 95
Ton t Token Pasting (##) .................................................................................. 95
Ton t defined() .................................................................................................... 96
Macro tham s................................................................................................................ 97
http://vietjack.com/ Trang chia s cc bi hc online min ph
Trang 4
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Trang 5
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
i vi c gi
Bi hng dn ny c thit k cho nhng lp trnh vin cn tm hiu ngn ng C nh l ngn
ng bt u cho vic tip cn th gii phn mm. Bi hng dn s a cho bn y nhng
hiu bit v ngn ng C t bt u n mc nng cao.
iu kin tin
Trc khi bt u vi bi hc ny, bn nn c nhng hiu bit c bn v cc thut ng v
Chng trnh my tnh. Nhng hiu bit c bn v bt c mt ngn ng lp trnh no cng c th
gip bn d dng hiu cc khi nim trong ngn ng C v tin nhanh trn con ng hc tp.
Trang 6
http://vietjack.com/cprogramming/index.jsp
Ngn ng c cu trc
Copyright vietjack.com
S tht v ngn ng C
Ngn ng c chun ha nm 1988 bi Vin tiu chun quc gia Hoa K (ANSI).
Ti sao li s dng C?
C c pht trin ban u cho vic pht trin h thng, c bit l cc h iu hnh. C c tha
nhn nh l mt trong cc ngn ng pht trin h thng bi n cung cp code v chy mt on
code mt cc nhanh chng nh cc ngn ng kiu Assemly. Vi v d v s dng C nh sau:
H iu hnh
Cc trnh in n
Network Drivers
Trang 7
http://vietjack.com/cprogramming/index.jsp
C s d liu
Tin ch
Copyright vietjack.com
Chng trnh C
Mt chng trnh C c th thay i t 3 dng n hng triu dng code, v nn c vit trong
mt hoc nhiu file vi nh dng .c, v d hello.c. Bn c th s dng vi, vim hoc bt k
trnh editor no vit chng trnh C thnh mt file.
Bi hng dn gi s bn bit cch s dng cc trnh son tho v cch vit source code - m
ngun bn trong mt file chng trnh.
Ci t mi trng C
Ci t mi trng cc b - Local
Nu bn ang mun ci t chng trnh C, bn cn phi s dng 2 phn mm trn my tnh ca
bn: (a) Chng trnh son vn bn - Text Editor v (b) B bin dch C.
Text Editor
c s dng son tho cc chng trnh. V d v mt vi trnh editor nh Window Notepad,
Notepad ++, vim hay vi
Tn v cc phin bn ca cc trnh editor c th thay i theo cc h iu hnh. V d, Notepad
c s dng trn Windows, hoc vim hay vi c s dng trn Linux hoc UNIX.
Cc file bn to trong trnh editor c gi l source file (file ngun) v cha cc chng trnh
code. Cc file trong chng trnh C thng c t tn vi phn m rng ".c".
Trc khi bt u chng trnh ca bn, hy chc chn bn c mt trnh editor trn my tnh v
bn c kinh nghim vit cc chng trnh my tnh, lu tr trong file v thc thi n.
B bin dch C
M ngun c vit trong file ngun di dng c th c c. N s c bin dch thnh m
my, cho CPU c th thc hin cc chng trnh ny da trn cc lnh c vit.
Trang 8
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
B bin dch c s dng bin dch m ngun (source code) ca bn n chng trnh c th
thc thi. Ti gi s bn c kin thc c bn v mt b bin dch ngn ng lp trnh.
B bin dch thng dng nht l b bin dch GNU C/C++, mt khc bn c th c cc b bin dch
khc nh HP hoc Solaris vi H iu hnh tng ng.
Di y l phn hng dn gip bn cch ci t b bin dich GNU C/C++ trn cc h iu hnh
khc nhau. Ti ang cp n C/C++ bi v b bin dch GNU gcc hot ng cho c ngn ng C
v C++.
Trang 9
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Ci t trn Windows
ci t GCC trn Windows bn cn phi ci t MinGW. ci t MinGW, bn truy cp
vo www.mingw.org, v theo hng dn trn trang download ny. Download phin bn mi nht
cho chng trnh MinGW, di tn MinGW-<version>.exe.
Khi ci t MinWG, t nht bn phi ci t gcc-core, gcc-g++, binutils v MinGW runtime, nhng
bn c th ci t nhiu hn.
Thm th mc con bin trong ni ci t MinGW vo bin mi trng PATH ca bn, bn c th s
dng trc tip cc cng c di dng command line mt cc d dng.
Khi qu trnh ci t hon tt, bn c th chy gcc, g++, ar, ranlib, dlltool v cc cng c GNU khc
trn Windows command line.
Cc lnh tin x l
Cc hm
Cc bin
Cc comment
int main()
{
Trang 10
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
/* my first program in C */
printf("Hello, World! \n");
return 0;
}
Trang 11
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
$ gcc hello.c
$ ./a.out
Hello, World!
Bn phi chc chn b bin dch gcc c ci t trn my tnh ca bn v bn ang chy n
trong th mc cha file ngun hello.c.
C php C c bn
Bn bit v cu trc c bn ca chng trnh C, by gi bn s d dng hiu c nhng khi
c bn trong ngn ng C.
Cc Token trong C
Trong ngn ng C bao gm rt nhiu cc token khc nhau v mt token c th l mt t kha, mt
nh danh, mt hng s, mt chui hoc mt k t. V d, dng lnh C di y bao gm 5 token
sau:
printf("Hello, World! \n");
Trang 12
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Comment trong C
Ch thch ging nh vic tr gip trong chng trnh C v c b qua bi b bin dch. N bt
u vi /* v kt thc vi k t */ nh di y:
/* my first program in C */
zara
abc
move_name
a_123
myname50
_temp
a23b9
retVal
Cc t kha trong C
Di y l danh sch cc t kha c dnh ring trong ngn ng C. Cc nh danh hay bin,
hng s khng th t tn ging cc t kha di y, nu khng chng trnh s bo li.
auto
else
long
switch
break
enum
register
typedef
case
extern
return
union
char
float
short
unsigned
const
for
signed
void
Trang 13
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
continue
goto
sizeof
volatile
default
if
static
while
do
int
struct
_Packed
double
Phi c t nht mt khong trng k t gia int v age b bin dch hiu v phn bit c
chng. Mt khc, xem lnh di y:
fruit = apples + oranges;
Trang 14
http://vietjack.com/cprogramming/index.jsp
1
Copyright vietjack.com
Kiu c bn:
L cc kiu d liu s hc v bao gm 2 kiu chnh: a) kiu integer v b)
kiu du chm ng.
Kiu lit k:
y l cc kiu s hc v c dng nh ngha cc bin m n c th
c gn trc mt s lng nht nh gi tr integer qua sut chng
trnh.
Kiu void:
Kiu nh danh void l kiu c bit th hin rng khng c gi tr no.
Cc kiu d liu mng v cu trc c s dng trong tp hp nh cc kiu d liu gp. Cc kiu
l hm ch nh loi kiu m hm tr v. Chng ta s xem cc kiu d liu c bn phn di y,
trong nhng kiu cn li s c nhc n cc chng sau.
Kiu integer
Bng di y a cho bn nhng hiu bit chi tit v kiu s nguyn vi c lu tr cng nh gii
hn ca n:
Kiu
C lu tr
Dy gi tr
char
1 byte
unsigned
1 byte
0 ti 255
Trang 15
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
char
signed char
1 byte
-128 ti 127
int
2 hoc 4
bytes
unsigned int
2 hoc 4
bytes
short
2 bytes
-32,768 ti 32,767
unsigned
short
2 bytes
0 ti 65,535
long
4 bytes
-2,147,483,648 ti 2,147,483,647
unsigned
long
4 bytes
0 ti 4,294,967,295
int main()
{
printf("Storage size for int : %d \n", sizeof(int));
Trang 16
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
return 0;
}
Khi bn bin dch v thc thi cc lnh bn trn, n s cung cp kt qu di y trn h iu hnh
Linux:
Storage size for int : 4
Kiu
C lu tr
Dy gi tr
chnh xc
float
4 byte
1.2E-38 ti 3.4E+38
6 v tr thp phn
double
8 byte
2.3E-308 ti 1.7E+308
15 v tr thp phn
long double
10 byte
3.4E-4932 ti 1.1E+4932
19 v tr thp phn
float.h trong Header file nh ngha cc macro cho php bn s dng cc gi tr ny v cc kiu c
th khc v gi tr biu din nh phn ca s thc trong chng trnh ca bn. Di y l v d s
in ra c ca kiu float cng nh di gi tr ca n:
#include <stdio.h>
#include <float.h>
int main()
{
printf("Storage size for float : %d \n", sizeof(float));
printf("Minimum float positive value: %E\n", FLT_MIN );
printf("Maximum float positive value: %E\n", FLT_MAX );
printf("Precision value: %d\n", FLT_DIG );
Trang 17
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
return 0;
}
Khi bn bin dch v thc thi chng trnh trn, n s cung cp kt qu di y trn Linux:
Storage size for float : 4
Minimum float positive value: 1.175494E-38
Maximum float positive value: 3.402823E+38
Precision value: 6
Kiu void
Kiu void xc nh khng c gi tr no. N c s dng trong 3 trng hp sau y:
Hm tr v void
C rt nhiu hm trong ngn ng C m khng tr v d liu no v bn c
th ni rng l hm void. Mt hm m khng tr v gi tr no c kiu l
void. V d: void exit (int status);
Hm vi tham s void
C nhng hm trong C m khng chp nhn bt k tham s. Mt hm vi
khng c tham s no c th chp nhu l mt void. V d: int rand(void);
Con tr ti void
Mt con tr c kiu void * i din cho a chi ca i tng, ch khng
phi l mt kiu. V d hm cp pht b nh void *malloc (size_t size);tr
v mt con tr void c th p kiu sang bt k mt i tng no.
Trang 18
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Bin trong C
Mt bin trong C khng l g nhng l mt tn c a ra n b nh lu tr chng trnh c
th thao tc. Mi bin trong C c mt kiu xc nh, xc nh c v layout cho b nh bin .
Phm vi ca gi tr c th c d tr trong b nh, vic thit lp cc biu thc c th c p
dng vi bin.
Tn ca bin c th bao gm ch ci, ch s v du gch di (_), nhng n phi bt u bng
k t ch ci hoc du gch di. Ch hoa v ch thng l hai i tng phn bit bi v C l
ngn ng phn bit ch hoa - ch thng. Da vo nhng loi c bn gii thch chng
trc, c nhng loi kiu ca bin c bn nh sau:
Kiu
Miu t
char
int
float
Gi tr du chm ng chnh xc n.
double
void
Ngn ng lp trnh C cho php nh ngha cc loi kiu bin khc nhau, c th xem cc chng
sau nh bin lit k, bin con tr, bin mng, bin cu trc, bin Union, .
Trang 19
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
y, type l ca kiu d liu ca ngn ng C nh char, w_char, int, float, double, bool hay bt
k kiu i tng c ngi dng nh ngha variable_list c th bao gm mt hoc nhiu tn
nh danh ngn cch nhau bi du phy. Vi v d khai bo hp l ca bin nh sau:
int
i, j, k;
char
c, ch;
float
f, salary;
double d;
Dng int i, j, k; va khai bo v nh ngha cho bin i, j, k v hng dn trnh bin dch to cc
bin di tn i, j, k vi kiu int.
Bin c th c khi to (c gn cc gi tr ban u) trong khai bo ca n. Mt phn khi to
bao gm mt du "=" theo sau bi mt biu thc hng s s nh sau:
type variable_name = value;
Vi v d di y:
extern int d = 3, f = 5;
// declaration of d and f.
int d = 3, f = 5;
byte z = 22;
char x = 'x';
Trang 20
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
V d
Th v d di y, ni bin c khai bo trn u, nhng chng c nh ngha v khi to
trong hm main:
#include <stdio.h>
// Variable declaration:
extern int a, b;
extern int c;
extern float f;
int main ()
{
/* variable definition: */
int a, b;
int c;
float f;
/* actual initialization */
a = 10;
b = 20;
c = a + b;
printf("value of c : %d \n", c);
f = 70.0/3.0;
printf("value of f : %f \n", f);
return 0;
}
Trang 21
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
value of f : 23.333334
int main()
{
// function call
int i = func();
}
// function definition
int func()
{
return 0;
}
Trang 22
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
10 = 20;
Hng s trong C
Hng s (constant) hng n nhng gi tr c nh m chng trnh khng th thay i trong qu
trnh thc thi. Nhng gi tr c nh cng c gi l literals.
Hng s c th l mt kiu d liu bt k no nh kiu d liu integer, float, character hay string.
C nhng hng s kiu lit k (enumeration).
Mt hng s c th c coi nh mt bin thng ngoi vic gi tr ca n khng th thay i sau
khi c nh ngha.
/* Hp l */
215u
/* Hp l */
0xFeeL
/* Hp l */
078
032UU
/* decimal */
0213
/* octal */
0x4b
/* hexadecimal */
30
/* int */
30u
/* unsigned int */
30l
/* long */
30ul
/* unsigned long */
Trang 23
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Hng s du chm ng
Mt hng s du chm ng c mt phn integer, mt gi tr decimal, phn phn s v phn m.
Bn c th biu din gi tr du chm ng trong kiu thp phn v kiu phn s.
Khi biu din gi tr vi nh dng thp phn, bn phi thm phn integer, phn m hoc c hai.
Phn m c vit bi e hoc E.
Di y l vi v d cho phn du chm ng:
3.14159
/* Legal */
314159E-5L
/* Legal */
510E
210f
.e55
Hng s k t
Phn k t c ng m trong du nhy n ('), v d 'x' v c th c lu tr trong mt bin
n gin kiu char.
Mt k t c th l mt k t thng (v d 'x') hoc chui thot (e.g., '\t'), hoc mt k t ph
thng (e.g., '\u02C0').
C nhng k t c th trong C khi bt u bng du \ s c ngha c bit v c dng biu
din dng mi (\n), tab mi (\t). Di y l danh sch cc k t c bit:
Dy thot
ngha
\\
K t \
\'
K t '
\"
K t "
Trang 24
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
\?
K t ?
\a
Ting chung
\b
Backspace
\f
Form feed
\n
Dng mi
\r
Carriage return
\t
tab ngang
\v
tab dc
\ooo
S trong c s 8 ca 1 n 3 k s
\xhh . . .
Sau y l v d ch mt s k t dy thot:
#include <stdio.h>
int main()
{
printf("Hello\tWorld\n\n");
return 0;
}
Trang 25
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
World
"hello, \
dear"
nh ngha hng s
C 2 cch n gin trong C nh ngha hng s:
1. S dng b tin x l #define.
2. S dng t kha const.
Di y l v d chi tit:
#include <stdio.h>
#define LENGTH 10
Trang 26
http://vietjack.com/cprogramming/index.jsp
#define WIDTH
Copyright vietjack.com
int main()
{
int area;
return 0;
}
Di y l v d chi tit:
#include <stdio.h>
int main()
{
const int
LENGTH = 10;
const int
WIDTH
= 5;
Trang 27
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
return 0;
}
Lp lu tr trong C
Mt lp lu tr nh ngha phm vi (nhn thy c) v thi gian tn ti ca mt bin hoc/v cc
hm trong chng trnh C. Nhng c t i trc kiu c th c thay i. Di y l nhng
lp lu tr, c th s dng trong chng trnh C.
auto
register
static
extern
Lp lu tr auto
Lp lu tr auto l lp lu tr mc nh cho tt c cc bin cc b:
{
int mount;
auto int month;
}
V d trn nh ngha hai bin trong cng mt lp lu tr, auto c th c s dng bn trong
hm, v d bin cc b.
Trang 28
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Lp lu tr register
Lp lu tr register c th c s dng nh ngha bin cc b v c th c lu tr trong
mt vng ng k thay v RAM. iu ny ngha l bin ny c c ti a tng ng vi c ng
k.
{
register int
miles;
Lp lu tr static
Lp lu tr static hng dn trnh bin dch gi cc gi tr bin local tn ti trong thi gian sng
ca chng trnh thay v vic to ra v hy n mi ln chy qua phm vi . Do , to mt
bin local tnh cho php chng lu tr cc gi tr vi cc hm gi.
Lp static ny c th c p dng cho bin ton cc. Khi vic ny din ra, n gy ra phm vi ca
bin c gii hn trong file m n khai bo.
Trong lp trnh C, khi static c s dng ng vi lp, n dn n ch c mt bn copy ca lp
khai bo c chia s bi tt c cc i tng s dng lp ny.
#include <stdio.h>
/* function declaration */
void func(void);
main()
{
while(count--)
{
func();
Trang 29
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
}
return 0;
}
/* function definition */
void func( void )
{
static int i = 5; /* local static variable */
i++;
Lp lu tr extern
Lp lu tr extern c s dng a tham chiu n cc bin ton cc m c nhn thy bi
tt c cc file chng trnh.
Khi bn c nhiu file v bn nh ngha cc bin cc b hoc hm, n s c s dng cc file
khc. hiu vn ny, extern c s dng khai bo bin ton cc hoc hm file khc.
T kha extern c s dng khi hai hoc nhiu file chia s chung mt bin hoc hm nh v d
di y:
File u tin: main.c
#include <stdio.h>
int count ;
Trang 30
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
main()
{
count = 5;
write_extern();
}
File th 2: support.c
#include <stdio.h>
void write_extern(void)
{
printf("count is %d\n", count);
}
N s cung cp chng trnh thc thi a.out, khi chng trnh ny c chy s in ra kt qu sau
y:
5
Ton t trong C
Ton t l mt biu tng m ni vi trnh bin dch thc hin mt php ton hc nht nh hoc
thao tc hp l. Ngn ng C c sn rt nhiu ton t v cung cp cc kiu ton t sau y:
Ton t s hc
Ton t quan h
Trang 31
http://vietjack.com/cprogramming/index.jsp
Ton t logic
Ton t gn
Ton t hn hp
Copyright vietjack.com
Bi hng dn s gii thch ton t s hc, quan h, logic, so snh bit, gn v cc ton t khc,
tng loi mt.
Ton t s hc
Bng di y ch ra tt c cc ton t s hc c h tr bi ngn ng C. Gi s bin A c gi
tr 10 v bin B c gi tr 20:
Hin th cc V d
Ton
t
Miu t
V d
A + B s cho kt qu l
30
A * B s cho kt qu l
200
B / A s cho kt qu l 2
Chia ly phn d
B % A s cho kt qu l
0
Trang 32
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
++
A++ s cho kt qu l
11
--
A-- s cho kt qu l 9
Ton t quan h
Bng di y ch ra tt c cc ton t quan h c h tr bi ngn ng C. Gi s rng
bin A c gi tr 10 v bin B c gi tr 20, ta c:
Hin th cc v d
Ton
t
Miu t
V d
==
(A ==
B) l
khng
ng.
!=
(A !=
B) l
true.
>
(A >
B) l
khng
ng.
<
Trang 33
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
>=
(A >=
B) l
khng
ng.
<=
(A <=
B) l
true.
Ton t logic
Bng di y ch r tt c cc ton t logic c h tr bi ngn ng C. Gi s bin A c gi tr
1 v bin B c gi tr 0:
Hin th cc v d
Ton Miu t
t
V
d
&&
(A
&&
B) l
false.
||
(A ||
B) l
true.
Trang 34
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
p&q
p|q
p^q
Trang 35
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Ton
t
Miu t
V d
&
(A &
B) s
cho
kt
qu
l 12,
tc l
0000
1100
(A ^
B) s
cho
kt
qu
l 49,
tc l
0011
0001
Trang 36
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
(~A )
s
cho
kt
qu
l 61,
tc l
1100
0011.
<<
A <<
2 s
cho
kt
qu
240,
tc l
1111
0000
(dch
sang
tri
hai
bit)
>>
A >>
2 s
cho
kt
qu
l 15,
tc l
0000
1111
Trang 37
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
(dch
sang
phi
hai
bit)
Ton t gn
y l nhng ton t gn c h tr bi ngn ng C:
Hin th cc v d
Ton
t
Miu t
V d
C=A
+ B s
gn
gi tr
ca A
+B
vo
trong
C
+=
C +=
A
tng
ng
vi C
=C+
A
-=
C -= A
tng
Trang 38
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
ng
vi C
=CA
*=
C *= A
tng
ng
vi C
=C*
A
/=
C /= A
tng
ng
vi C
=C/
A
%=
C %=
A
tng
ng
vi C
=C%
A
<<=
C <<=
2
tng
ng
vi C
=C
Trang 39
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
<< 2
>>=
C >>=
2
tng
ng
vi C
=C
>> 2
&=
C &=
2
tng
ng
vi C
=C&
2
^=
C ^= 2
tng
ng
vi C
=C^
2
|=
Php OR bit.
C |= 2
tng
ng
vi C
=C|2
Trang 40
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Hin th cc v d
Ton
t
Miu t
V d
sizeof(a), vi a l
integer, th s tr li kt
qu l 4.
&
Tr li a ch ca mt bin.
Tr ti mt bin.
*a; s tr ti bin a.
?:
Nu iu kin l true ?
th gi tr X : Nu khng
th gi tr Y
Loi
Ton t
Th t u tin
Trang 41
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Postfix
() [] -> . ++ - -
Unary
Tnh nhn
*/%
Tnh cng
+-
Dch chuyn
<< >>
Quan h
Cn bng
== !=
&
Php OR bit
&&
Php OR logic
||
iu kin
?:
Gn
Trang 42
http://vietjack.com/cprogramming/index.jsp
Du phy
Copyright vietjack.com
Ngn ng lp trnh C gi s rng mi gi tr khng phi zero hoc khng phi null u c gi
tr true, nu c gi tr zero hoc null, n c gi tr false.
Ngn ng C cung cp cc kiu cu trc iu khin lung sau. Bn nhn vo ng link bit
thm chi tit v chng.
Lnh
Miu t
Lnh if
Trang 43
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
lnh khc.
Lnh if...else
Lnh switch
Bn c th s dng mt
lnh switch bn trong mt
lnh switch khc.
Ton t ? :
Chng ta bn v ton t iu kin ? : trong chng trc m c th c dng i v tr
cho lnh if...else. N c mu chung nh sau:
Exp1 ? Exp2 : Exp3;
Trong Exp1, Exp2 v Exp3 l cc biu thc. Ch vic s dng v t ca du hai chm.
Gi tr ca biu thc Exp1 trc du ? c gi tr true, Exp2 c thc hin, v gi tr ca n l gi
tr ca biu thc. Nu Exp1 l false th Exp3 c thc hin v gi tr ca n l gi tr ca biu
thc.
Vng lp trong C
C mt tnh hung m bn cn phi thc hin mt on code mt vi ln. Nhn chung, cc cu
lnh c thc hin mt cch tun t. Cu lnh u tin ca hm c thc hin trc, sau
n cu th 2 v tip tc.
Trang 44
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Ngn ng lp trnh cung cp cho chng ta nhiu cu trc iu khin v cho php bn thc hin
nhng phn phc tp.
Vng lp cho php thc hin mt lnh v mt nhm lnh nhiu ln , di y l dng tng qut:
C h tr nhng lnh iu khin sau y. Click chut vo link xem chi tit.
Kiu vng lp
Miu t
Vng lp While
Vng lp for
Vng lp do...while
Trang 45
http://vietjack.com/cprogramming/index.jsp
Lng cc vng lp
Copyright vietjack.com
Lnh iu khin
Miu t
Lnh break
Lnh continue
Lnh goto
Vng lp v hn
Mt vng lp l vng lp v hn khi mt iu kin khng bao gi false. Vng lp for thng c
s dng cho mc ch ny. Khi bn ba biu thc iu kin trong vng lp for trng th bn s
to ra mt vng lp v hn.
#include <stdio.h>
int main ()
{
for( ; ; )
{
Trang 46
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
return 0;
}
Hm trong C
Mt hm l mt nhm cc lnh i cng nhau thc hin mt nhim v. Mi chng trnh C c t
nht mt hm l hm main(), v tt c hu ht cc chng trnh bnh thng u nh ngha thm
cc hm.
Bn c th chia on code ca bn thnh nhng hm ring bit. Cch bn chia on code ca bn
thnh cc hm khc nhau ph thuc vo bn, nhng theo tnh logic, mt hm thng c mt
nhim v nht nh.
Mt s khai bo hm thng bo vi b bin dch v tn ca hm, kiu tr v v tham s. Mt nh
ngha hm cung cp phn thn ca mt hm.
Cc th vin tiu chun ca ngn ng C cung cp rt nhiu hm c sn chng trnh ca bn
c th gi. V d, hm strcat() c th ni hai on chui, hm memcpy() dng copy mt vng
nh n mt vng nh khc v rt nhiu hm khc na.
Mt hm c bit n vi cc tn khc nhau nh mt phng thc, mt tuyn ph hoc mt th
tc.
nh ngha mt hm
Mu chung ca nh ngha hm trong Ngn ng C nh sau:
kieu_tra_ve ten_ham( danh_sach_tham_so )
{
than_cua_ham
}
Trang 47
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
V d:
Sau y l m ngun cho mt hm c tn gi l max(). Hm ny c 2 tham s: num1 v num2 v
tr v gi tr ln nht gia hm s:
/* function returning the max between two numbers */
int max(int num1, int num2)
{
/* local variable declaration */
int result;
return result;
}
Trang 48
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Khai bo hm
Mt khai bo hm thng bo cho trnh bin dch v tn hm v cch gi ca hm. Phn thn hm
c th nh ngha mt cch ri rc.
Mt khai bo hm c cc phn sau y:
return_type function_name( parameter list );
Tn cc tham s khng quan trng trong vic khai bo hm, nhng kiu di y l cch khai bo
hp l:
int max(int, int);
Gi hm
Trong khi to mt hm, bn nh ngha nhng g hm phi lm. s dng mt hm, bn phi gi
hm thc hin mt nhim v c th.
Khi mt chng trnh gi mt hm, phn iu khin c chuyn n hm c gi. Mt hm
c gi thc hin cc nhim v c nh ngha v tr v gi tr sau khi thc hin chng trnh.
gi hm, bn n gin cn truyn cc tham s c yu cu cng vi tn ca hm v nu hm
tr v cc gi tr, bn c th d tr cc gi tr tr v ny, v d:
#include <stdio.h>
/* function declaration */
int max(int num1, int num2);
int main ()
{
/* local variable definition */
Trang 49
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int a = 100;
int b = 200;
int ret;
return 0;
}
return result;
}
Tham s ca hm:
Mt hm s dng cc danh sch tham s, n phi khai bo cc bin v chp nhn gi tr cc bin
ny. Cc bin ny c gi l cc bin chnh thc.
Trang 50
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Kiu gi
Miu t
Gi bi gi tr
Gi bi tham chiu
Trang 51
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Bin cc b
Bin cc b c khai bo bn trong mt hm hoc khai bo bn trong mt khi code. Chng
c s dng bi cc lnh trong hm hoc khi code . Bin cc b khng c s dng bn
ngoi ca hm. Di y l v d v vic s dng bin cc b. Ti y bin a,b v c c s dng
trong hm main():
#include <stdio.h>
int main ()
{
/* local variable declaration */
int a, b;
int c;
/* actual initialization */
a = 10;
b = 20;
c = a + b;
return 0;
}
Bin ton cc
Bin ton cc c nh ngha bn ngoi mt hm, thng l phn u ca chng trnh. Bin
ton cc c th cha cc gi tr trong thi gian chng trnh chy v c th c truy cp bi bt
k hm no nh ngha trong chng trnh.
Mt bin ton cc c th c truy cp bi bt k hm no. iu ngha l bin ton cc c
s dng sut chng trnh sau khi n khai bo. Di y l v d minh ha cho bin cc b v
ton cc:
#include <stdio.h>
Trang 52
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main ()
{
/* local variable declaration */
int a, b;
/* actual initialization */
a = 10;
b = 20;
g = a + b;
return 0;
}
Mt chng trnh c th c bin ton cc v local trng tn. Trong trng hp bin cc b bn
trong hm s c u tin s dng. Di y l v d:
#include <stdio.h>
int main ()
{
/* local variable declaration */
int g = 10;
g);
return 0;
Trang 53
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main ()
{
/* local variable declaration in main function */
int a = 10;
int b = 20;
int c = 0;
a);
c = sum( a, b);
printf ("value of c in main() = %d\n",
c);
return 0;
}
a);
b);
Trang 54
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
return a + b;
}
Kiu d liu
Gi tr khi to mc nh
int
char
'\0'
float
double
pointer
NULL
Thng trong thc t lp trnh bn nn khi to cc gi tr bin mt cch chnh xc, nu khng
chng trnh ca bn c th gy ra nhng kt qu khng mong mun .
Trang 55
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Trang 56
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main ()
{
int n[ 10 ]; /* n is an array of 10 integers */
int i,j;
Trang 57
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
return 0;
}
Khi nim
Miu t
C h tr cc mng a
chiu. Mu n gin nht
ca mng ny l mng hai
Trang 58
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
chiu.
Bn c th truyn ti hm
mt im tr ch ti mt
mng bi xc nh tn
mng ch khng phi l
mt ch s.
Tr v mng t mt hm trong C
C cho php mt hm c th
tr v mt mng.
Tr ti mt mng trong C
Bn c th tr ti phn t
u tin ca mng mt
cch n gin ch bi xc
nh tn mng , ch
khng phi mt ch s.
Con tr trong C
Con tr - Pointer trong ngn ng C rt d hc. Mt vi tc v trong ngn ng C c thc hin d
dng hn nh con tr, v nhng tc v khc tr nn linh hot hn, nh trong vic cp pht b
nh, khng th thc hin m khng dng con tr. Do rt cn thit phi nm vng con tr khi tr
thnh mt lp trnh vin C hon thin. By gi hy bt u bng nhng bc n gin nht.
Nh bn bit, mi bin trong mt vng nh nht nh v mi vng nh ny c a ch c n c
nh ngha d dng trong vic truy cp s dng ton t (&), tng ng vi a ch ca n trong
b nh. Xem xt v d di y, s in ra a ch ca bin c nh ngha:
#include <stdio.h>
int main ()
{
int
var1;
char var2[10];
Trang 59
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
);
);
return 0;
}
Con tr l g?
Mt con tr - pointer l mt bin m trong gi tr ca n l a ch ca bin khc. V d nh a
ch ca vng nh. Ging nh cc bin v hng s, bn phi khai bo con tr trc khi bn c th
s dng n lu tr bt k a ch ca bin no. Dng tng qut ca vic khai bo con tr nh
sau:
type *var-name;
*ip;
/* pointer to an integer */
double *dp;
/* pointer to a double */
float
*fp;
/* pointer to a float */
char
*ch
/* pointer to a character */
Trang 60
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main ()
{
int
var = 20;
int
*ip;
ip = &var;
);
return 0;
}
Trang 61
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main ()
{
int
*ptr = NULL;
);
return 0;
}
if(!ptr)
/* succeeds if p is null */
Trang 62
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Khi nim
Miu t
Con tr i s trong C
C 4 ton t i s m c th c
s dng trn cc con tr l: ++, --, +, -
Bn c th nh ngha cc mng
gi cc con tr.
Tr v con tr t hm trong C
Chui trong C
Chui trong ngn ng lp trnh C thc cht l mng mt chiu ca cc k t m kt thc bi mt
k t null \0.
Phn khai bo v khi to di y to ra mt chui bao gm mt t Hello. gi cc gi tr null
ti cui ca mng, c ca mng cc k t bao gm mt chui phi nhiu hn s lng cc k t
trong t kha Hello.
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Trang 63
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main ()
{
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
return 0;
}
STT Hm & Mc ch
strcpy(s1, s2);
Sao chp chui s2 cho chui s1.
strcat(s1, s2);
Trang 64
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
strlen(s1);
Tr v di ca chui s1.
strcmp(s1, s2);
Tr v 0 nu s1 v s2 l nh nhau; nh hn 0 nu s1<s2; ln hn 0 nu
s1>s2.
strchr(s1, ch);
Tr v con tr ti v tr u tin ca ch trong s1.
strstr(s1, s2);
Tr v con tr ti v tr u tin ca chui s2 trong chui s1.
int main ()
{
char str1[12] = "Hello";
char str2[12] = "World";
char str3[12];
int
len ;
%s\n", str3 );
%s\n", str1 );
Trang 65
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
%d\n", len );
return 0;
}
Hello
HelloWorld
strlen(str1) :
10
Bn c th tm thy mt danh sch y cc hm lin quan ti chui trong Th vin tiu chun
C.
Cu trc trong C
Cc mng trong C cho php bn nh ngha mt vi loi bin c th gi gi tr ca mt vi thnh
phn cng kiu d liu. Nhng structure - cu trc l mt loi d liu khc trong ngn ng lp
trnh C, cho php bn kt hp cc d liu khc kiu nhau.
Cu trc c s dng biu din mt bn ghi. Gi s bn mun lu tr gi tr ca mt quyn
sch trong th vin ca bn. Bn c th lu tr cc thuc tnh ca sch sau y:
Title
Author
Subject
Book ID
nh ngha mt cu trc
nh ngha cu trc, bn phi s dng cu lnh struct. Cu lnh struct nh ngha mt kiu d
liu mi, vi hn mt thnh phn trong chng trnh ca bn. Dng tng qut ca cu lnh struct
nh sau y:
Trang 66
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
title[50];
char
author[50];
char
subject[100];
int
book_id;
} book;
struct Books
{
char
title[50];
char
author[50];
char
subject[100];
int
book_id;
};
Trang 67
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main( )
{
struct Books Book1;
/* book 1 specification */
strcpy( Book1.title, "C Programming");
strcpy( Book1.author, "Nuha Ali");
strcpy( Book1.subject, "C Programming Tutorial");
Book1.book_id = 6495407;
/* book 2 specification */
strcpy( Book2.title, "Telecom Billing");
strcpy( Book2.author, "Zara Ali");
strcpy( Book2.subject, "Telecom Billing Tutorial");
Book2.book_id = 6495700;
return 0;
}
Trang 68
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Cc cu trc nh cc tham s hm
Bn c th t cu trc nh mt tham s ca hm theo cch d dng nh cc bin khc hay con
tr. Truy cp bin cu trc nh v d di y:
#include <stdio.h>
#include <string.h>
struct Books
{
char
title[50];
char
author[50];
char
subject[100];
int
book_id;
};
/* function declaration */
void printBook( struct Books book );
int main( )
{
struct Books Book1;
/* book 1 specification */
Trang 69
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
/* book 2 specification */
strcpy( Book2.title, "Telecom Billing");
strcpy( Book2.author, "Zara Ali");
strcpy( Book2.subject, "Telecom Billing Tutorial");
Book2.book_id = 6495700;
return 0;
}
void printBook( struct Books book )
{
printf( "Book title : %s\n", book.title);
printf( "Book author : %s\n", book.author);
printf( "Book subject : %s\n", book.subject);
printf( "Book book_id : %d\n", book.book_id);
}
Trang 70
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Con tr ti cu trc
Bn c th nh ngha con tr cu trc theo cch bn nh ngha cc loi con tr khc nh sau:
struct Books *struct_pointer;
struct Books
{
char
title[50];
char
author[50];
char
subject[100];
int
book_id;
};
/* function declaration */
void printBook( struct Books *book );
int main( )
{
Trang 71
http://vietjack.com/cprogramming/index.jsp
struct Books Book1;
Copyright vietjack.com
/* book 1 specification */
strcpy( Book1.title, "C Programming");
strcpy( Book1.author, "Nuha Ali");
strcpy( Book1.subject, "C Programming Tutorial");
Book1.book_id = 6495407;
/* book 2 specification */
strcpy( Book2.title, "Telecom Billing");
strcpy( Book2.author, "Zara Ali");
strcpy( Book2.subject, "Telecom Billing Tutorial");
Book2.book_id = 6495700;
return 0;
}
void printBook( struct Books *book )
{
printf( "Book title : %s\n", book->title);
printf( "Book author : %s\n", book->author);
printf( "Book subject : %s\n", book->subject);
printf( "Book book_id : %d\n", book->book_id);
}
Trang 72
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
y, packed_struct cha 6 phn t: 4 phn t f1..f4 l 1 bit, mt type l 4 bit v mt my_int 9 bit.
C t ng ng gi cc trng bit trn cng gn cng tt, min l chiu di ti a ca trng ny
nh hn hoc bng vi chiu di t nguyn ca my tnh.
Union trong C
Mt Union l d liu c bit trong ngn ng C cho php bn d tr cc kiu d liu khc nhau
trong cng mt vng nh. Bn c th nh ngha Union vi rt nhiu tham s, nhng ch mt thnh
phn cha gi tr ti mt thi im. Union cung cp mt cch hiu qu cho vic s dng mt vng
nh cho nhiu mc ch.
Trang 73
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
nh ngha mt Union
nh ngha mt Union, bn phi cung cp cu lnh union theo cch tng t nh bn nh
ngha structure. Cu lnh union nh ngha kiu d liu mi, vi hn mt thnh vin trong chng
trnh ca bn. Dng ca lnh union nh sau:
union [union tag]
{
member definition;
member definition;
...
member definition;
} [one or more union variables];
union tag l gi tr ty chn v mt nh ngha thnh l nh ngha bin thng thng, nh int i,
hoc float j v cc kiu nh ngha bin khc. cui nh ngha Union trc du chm phy cui
cng, bn c th xc nh mt hoc nhiu bin Union nhng n l ty chn. y l cch bn nh
ngha kiu Union tn Data vi 3 thnh vin i, f v str:
union Data
{
int i;
float f;
char
str[20];
} data;
Trang 74
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
union Data
{
int i;
float f;
char
str[20];
};
int main( )
{
union Data data;
return 0;
}
union Data
{
int i;
float f;
char
str[20];
Trang 75
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
};
int main( )
{
union Data data;
data.i = 10;
data.f = 220.5;
strcpy( data.str, "C Programming");
return 0;
}
union Data
{
int i;
float f;
Trang 76
http://vietjack.com/cprogramming/index.jsp
char
Copyright vietjack.com
str[20];
};
int main( )
{
union Data data;
data.i = 10;
printf( "data.i : %d\n", data.i);
data.f = 220.5;
printf( "data.f : %f\n", data.f);
return 0;
}
Trang 77
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
By gi cu trc trn s yu cu 4 byte cho b nh cho bin status nhng ch 2 bit c s dng
lu tr gi tr. Bn phi s dng n 32 bin vi di 1 bit ny, do cu trc ny s s dng
4 byte v khi bn c 33 bin, n s cp pht v tr tip theo trong b nh v bt u s dng 8 byte.
By gi chng ta hy kim tra v d di y hiu v nh ngha ny.
#include <stdio.h>
#include <string.h>
Trang 78
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main( )
{
printf( "Memory size occupied by status1 : %d\n", sizeof(status1));
printf( "Memory size occupied by status2 : %d\n", sizeof(status2));
return 0;
}
Phn t
Miu t
type
width
Trang 79
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Vic nh ngha trn s hng dn trnh bin dch C l bin s s dng 3 bit d tr cc gi tr,
nu bn s dng nhiu hn 3 bit n s khng cho php bn lm th. By gi hy th v d di
y:
#include <stdio.h>
#include <string.h>
struct
{
unsigned int age : 3;
} Age;
int main( )
{
Age.age = 4;
printf( "Sizeof( Age ) : %d\n", sizeof(Age) );
printf( "Age.age : %d\n", Age.age );
Age.age = 7;
printf( "Age.age : %d\n", Age.age );
Age.age = 8;
printf( "Age.age : %d\n", Age.age );
return 0;
Trang 80
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Sau khi nh ngha kiu ny, nh danh BYTE c th c s dng nh l tn vit tt cho cc
kiu unsigned char, v d:
BYTE
b1, b2;
Theo quy c, cc ch ci vit hoa c s dng cho nhng nh ngha ny cho ngi s
dng d ghi nh, nhng bn c th s dng kiu ch thng nh sau:
typedef unsigned char byte;
title[50];
char
author[50];
Trang 81
http://vietjack.com/cprogramming/index.jsp
char
subject[100];
int
book_id;
Copyright vietjack.com
} Book;
int main( )
{
Book book;
return 0;
}
title : C Programming
Book
Book
Book
book_id : 6495407
typedef vs #define
#define l mt directive trong C m cng c s dng nh ngha tn hiu (vit tt) cho cc
kiu d liu a dng tng t nh typedef nhng c nhng im khc nhau sau:
Trang 82
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
S phin dch typedef c thc hin bi b bin dch, trong khi lnh #definec x l
bi b tin x l.
#define TRUE
#define FALSE 0
int main( )
{
printf( "Value of TRUE : %d\n", TRUE);
printf( "Value of FALSE : %d\n", FALSE);
return 0;
}
Trang 83
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
File chun
Con tr ti File
Thit b
u vo chun
stdin
Bn phm
stdout
Mn hnh
stderr
Mn hnh ca bn
Standard input
u ra chun
Standard output
Li chun
Standard error
Con tr file c ngha l truy cp file cho mc ch c v vit. Khu vc ny s gii thch cho
bn cch c gi tr t mn hnh v cch in kt qu trn mn hnh.
Trang 84
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
return 0;
}
Khi on code trn c bin dch v c thc thi, n i cho bn nhp vn bn v nhn ENTER
th chng trnh x l v ch c mt k t n ri sau hin th:
$./a.out
Enter a value : this is test
You entered: t
return 0;
Trang 85
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Khi code trn c bin dch v thc thi, n i cho bn nhp vn bn v nhn ENTER, sau
chng trnh x l v c c dng v hin th n nh sau:
$./a.out
Enter a value : this is test
You entered: This is test
Hm scanf() v printf()
Hm int scanf(const char *format, ...) c u vo t u vo tiu chun stdin v qut u vo
theo format c cung cp..
Hm int printf(const char *format, ...) vit kt qu u ra ti u ra tiu chun stdout v x l
u ra theo format cung cp.
format c th l chui n gin, nhng bn c th xc nh %s, %d, %c, %f, in hoc c
chui, integer, character hoc float tng ng. C nhiu ty chn c sn m c th c s dng
theo yu cu. bit thm chi tit v cc hm ny, bn c th truy cp vo trang tr gip. By gi
chng ta x l mt v d n gin sau:
#include <stdio.h>
int main( )
{
char str[100];
int i;
return 0;
}
Trang 86
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Khi on code trn c bin dch v thc thi, n i cho bn nhp vn bn v nhn ENTER, sau
chng trnh x l v c u vo v hin th nh sau:
$./a.out
Enter a value : seven 7
You entered: seven 7
M file
Bn c th s dng hm fopen() to file mi hoc m cc file tn ti. Cch gi ny s
khi to i tng loi FILE, m bao gm thng tin cn thit iu khin lung. Di y l mt
cch gi hm:
FILE *fopen( const char * filename, const char * mode );
Mode Miu t
Trang 87
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
M cc file tn ti vi mc ch c
r+
M file vn bn vi mc ch c v ghi.
w+
a+
ng file
ng 1 file bn c th s dng hm fclose() di y:
int fclose( FILE *fp );
Trang 88
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Ghi mt file
Di y l hm n gin nht thc hin vic ghi cc k t ring ti mt lung:
int fputc( int c, FILE *fp );
main()
{
FILE *fp;
fp = fopen("/tmp/test.txt", "w+");
fprintf(fp, "This is testing for fprintf...\n");
fputs("This is testing for fputs...\n", fp);
fclose(fp);
}
Khi on code trn c bin dch v thc hin, n to file mi l test.txt trong th mc /tmp v
ghi vo 2 dng ca 2 hm khc nhau. Cng c file ny phn tip theo.
c file
Di y l hm n gin nht c mt k t ring r t file:
Trang 89
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
main()
{
FILE *fp;
char buff[255];
fp = fopen("/tmp/test.txt", "r");
fscanf(fp, "%s", buff);
printf("1 : %s\n", buff );
Trang 90
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
B tin x l trong C
B tin x l trong C y khng phi l mt phn ca b bin dch, nhng c nhng bc ring
r trong qu trnh bin dch. Theo cch hiu c bn nht, b tin x l trong ngn ng C l cc
cng c thay th vn bn v hng dn trnh bin dch khng yu cu tin x l trc khi c
bin dch. Chng ti hng n b tin x l C nh CPP.
Tt c cc lnh tin x l bt u vi k th #. N t nht khng phi l k t trng, d dng
c. Di y l danh sch cc th tin x l quan trng.
Ch dn
Miu t
Trang 91
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
#define
#include
#undef
#ifdef
#ifndef
#if
#else
#elif
#endif
#error
#pragma
V d b tin x l
Phn tch cc v d sau hiu cc ch dn a dng.
#define MAX_ARRAY_LENGTH 20
Trang 92
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
#include <stdio.h>
#include "myheader.h"
Tin x l ny thng bo cho trnh bin dch ly th vin stdio.h t Th vin h thng v thm vo
m ngun hin ti. Dng k tip thng bo cho trnh bin dch ly tpmyheader.h t th mc my
tnh v thm ni dung v m ngun hin ti.
#undef
FILE_SIZE
#define FILE_SIZE 42
Tin x l ny thng bo cho trnh bin dch v hiu ha bin FILE_SIZE v nh ngha mi c gi
tr 42.
#ifndef MESSAGE
#define MESSAGE "You wish!"
#endif
iu ny thng bo cho trnh bin dch ngn ng C nh ngha MESSAGE nu MESSAGE khng
c nh ngha.
#ifdef DEBUG
/* Your debugging statements here */
#endif
Macro
Miu t
__DATE__
Trang 93
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
__TIME__
__FILE__
__LINE__
__STDC__
Bn th v d sau:
#include <stdio.h>
main()
{
printf("File :%s\n", __FILE__ );
printf("Date :%s\n", __DATE__ );
printf("Time :%s\n", __TIME__ );
printf("Line :%d\n", __LINE__ );
printf("ANSI :%d\n", __STDC__ );
Khi on code trn trong file test.c c bin dch v thc hin. N s in ra kt qu sau y:
File :test.c
Date :Jun 2 2012
Time :03:36:24
Line :8
ANSI :1
Trang 94
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Ton t tin x l
Ngn ng C cung cp cc ton t sau gip bn to cc macro:
message_for(a, b)
Du thng (#)
Ton t stringize - du thng ('#'), khi c s dng trong mt nh ngha macro, chuyn i mt
tham s macro thnh mt hng s chui. Ton t ny c th s dng vi macro xc nh mt
tham s c th trong danh sch tham s. V d:
#include <stdio.h>
#define
message_for(a, b)
int main(void)
{
message_for(Carole, Debra);
return 0;
}
Trang 95
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main(void)
{
int token34 = 40;
tokenpaster(34);
return 0;
}
Ton t defined()
Ton t tin x l defined c s dng vi biu thc hng xc nh nu mt nh danh c
nh ngha bi #define. Nu nh danh xc nh c nh ngha, th gi tr l true (khc 0). Nu
cha c nh ngha th gi tr l false (zero). Ton t c nh ngha c xc nh nh sau:
#include <stdio.h>
int main(void)
{
printf("Here is the message: %s\n", MESSAGE);
return 0;
Trang 96
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Macro tham s
Mt trong nhng tnh nng mnh m ca CPP l kh nng bt chc cc hm bi s dng cc
macro tham s. V d, chng ta c th c mt on code bnh phng mt s nh sau:
int square(int x) {
return x * x;
}
int main(void)
{
printf("Max between 20 and 10 is %d\n", MAX(10, 20));
return 0;
}
Trang 97
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
C php Include
C Header file ngi dng v h thng u c include s dng ch dn tin x l#include. Di
y l 2 dng:
#include <file>
Dng ny c s dng cho cc file h thng. N s tm file vi tn l file trong danh sch cc th
mc ca h thng.
#include "file"
Dng ny c s dng cho nhng file trong chng trnh ca bn. N s tm kim cc file vi
tn file trong th mc cng cha vi file hin ti.
Hot ng Include
Ch dn #include lm vic bi ch o trc tip b tin x l trong ngn ng C qut cc file nht
nh thm vo file hin ti trc khi bt u vi on m ngun hin ti. V d nu bn c mt
Header file l header.h nh sau:
char *test (void);
Trang 98
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int x;
#include "header.h"
v trnh bin dch s thy lung token tng t, khi chng trnh program.c c nh sau:
int x;
char *test (void);
Once-Only Header
Nu Header file c include 2 ln, trnh bin dch s bo li v in ra kt qu li. Cch tiu chun
trnh trng hp ny dng biu thc iu kin nh sau:
#ifndef HEADER_FILE
#define HEADER_FILE
#endif
Trong trng hp include ri, chng trnh trn s khng include ln 2 na.
Include vi cc iu kin
i khi bn cn thit phi chn mt trong s cc header include vo chng trnh, bn phi c
tham s cu hnh ca h iu hnh s dng. Bn c th thc hin iu ny vi mt dy cc
iu kin nh sau:
Trang 99
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
#if SYSTEM_1
# include "system_1.h"
#elif SYSTEM_2
# include "system_2.h"
#elif SYSTEM_3
...
#endif
p kiu trong C
p kiu l cch chuyn i mt bin t kiu d liu ny sang kiu d liu khc. V d, khi bn
mun lu tr mt gi tr long cho mt s integer, bn phi p kiu long thnh int. Bn c th
chuyn i gi tr t mt kiu ny sang mt kiu khc s dng ton t p kiu nh sau:
(type_name) expression
Xem xt v d sau m ton t p kiu lm cho php chia mt bin nguyn c thc hin nh l
mt hot ng du chm ng:
#include <stdio.h>
main()
{
int sum = 17, count = 5;
double mean;
Trang 100
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Khi thc hin on code, kt qu sau y c in ra, bin mean c kiu double:
Value of mean : 3.400000
S nng cp integer
S nng cp integer l qu trnh m cc gi tr ca integer nh hn int hoc unsigned intchuyn
i thnh kiu int hoc unsigned int. Gi s bn c v d v vic thm mt k t vo mt s int:
#include <stdio.h>
main()
{
int
i = 17;
sum = i + c;
printf("Value of sum : %d\n", sum );
Trang 101
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
y, gi tr ca bin sum l 116 bi v trnh bin dch thc hin s nng cp integer v chuyn
i gi tr c thnh ACII trc khi thc hin php ton thm.
Php chuyn i s hc thng thng khng c thc hin cho cc ton t gn, cho cc ton t
logic: && v ||. Chng ta theo di v d sau hiu khi nim ny:
#include <stdio.h>
Trang 102
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
main()
{
int
i = 17;
sum = i + c;
printf("Value of sum : %f\n", sum );
X l li trong C
Cc ngn ng lp trnh nh ngn ng C khng cung cp trc tip h tr vic x l li nhng bi v
l ngn ng chng trnh h thng, n cung cp mc thp nht cc dng ca gi tr tr v. Hu ht
cc hm ca C v hm trong Unix tr v gi tr 1 hoc null trong bt k trng hp li no v thit
lp mt m li errno cho bin ton cc v ch dn c li xy ra trong qu trnh gi hm. Bn c th
tm thy nhiu m li khc nhau trong Header file c tn l <error.h>.
V th mt lp trnh vin C c th kim tra gi tr tr v v thc hin hnh ng chnh xc da vo
gi tr tr v. Trong thc t, lp trnh vin nn thit lp gi tr errno l 0 ti thi im khi to
chng trnh. Mt gi tr 0 th hin rng khng c li trong chng trnh.
Hm perror() hin th chui m bn truyn cho n, theo sau bi du hai chm, mt khong
trng v sau l on vn bn m t gi tr li hin ti.
Trang 103
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main ()
{
FILE * pf;
int errnum;
pf = fopen ("unexist.txt", "rb");
if (pf == NULL)
{
errnum = errno;
fprintf(stderr, "Value of errno: %d\n", errno);
perror("Error printed by perror");
fprintf(stderr, "Error opening file: %s\n", strerror( errnum ));
}
else
{
fclose (pf);
}
return 0;
}
Trang 104
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Li chia cho s 0
y l mt trong nhng li rt ph bin trong qu trnh chia, bt c lp trnh vin no khng kim
tra iu kin s b chia l s 0 c th gp li ny trong qu trnh thc hin.
on code bn di sa li ny bi vic kim tra iu kin nu s b chia l s 0 trc khi chia:
#include <stdio.h>
#include <stdlib.h>
main()
{
int dividend = 20;
int divisor = 0;
int quotient;
exit(0);
}
Trang 105
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
main()
{
int dividend = 20;
int divisor = 5;
int quotient;
exit(EXIT_SUCCESS);
}
quy trong C
quy l qu trnh lp i lp li mt thnh phn theo cng mt cch. Di y l mt v d minh
ha tng qut:
void recursion()
{
recursion(); /* function calls itself */
}
Trang 106
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main()
{
recursion();
}
main()
{
int i = 15;
printf("Factorial of %d is %d\n", i, factorial(i));
return 0;
}
Trang 107
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Dy Fibonacci
Di y l mt v d khc, to ra dy Fabonacci cho mt s cho trc s dng hm quy:
#include <stdio.h>
int fibonaci(int i)
{
if(i == 0)
{
return 0;
}
if(i == 1)
{
return 1;
}
return fibonaci(i-1) + fibonaci(i-2);
}
int
main()
{
int i;
for (i = 0; i < 10; i++)
{
printf("%d\t%n", fibonaci(i));
}
return 0;
}
13
21
34
Trang 108
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main()
{
func(1, 2, 3);
func(1, 2, 3, 4);
}
To mt bin kiu va_list trong nh ngha hm. Kiu ny c nh ngha trong stdarg.h.
S dng tham s int v macro l va_start khi to bin va_list ti mt danh sch tham
s. Macro va_start ny c nh ngha trong stdarg.h.
S dng macro l va_arg v bin va_list truy cp mi mc trong danh sch tham s.
Trang 109
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
#include <stdio.h>
#include <stdarg.h>
va_list valist;
double sum = 0.0;
int i;
return sum/num;
}
int main()
{
printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));
}
Khi on code trn c bin dch v thc hin, n cho kt qu sau. Bn nn ghi nh rng
hm average() c gi hai ln v trong mi ln th tham s u tin biu din tng cc tham s
bin c truyn. Ch c cc tham s tnh s c s dng truyn s cc tham s.
Trang 110
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Average of 2, 3, 4, 5 = 3.500000
Average of 5, 10, 15 = 10.000000
Qun l b nh trong C
Chng ny s gii thch v cch qun l b nh ng trong ngn ng C. Ngn ng lp trnh C
cung cp vi hm khc nhau cho vic cp pht v qun l b nh. Nhng hm ny c th tm thy
trong Header file l <stdlib.h>.
STT Hm v Miu t
Cp pht b nh ng
Khi bn lp trnh, bn phi nhn thc v ln ca mt mng, sau n l d dng cho vic nh
ngha mng. V d, bn lu tr mt tn ca ngi bt k no, n c th ln ti ti a 100 k t v
th bn c th nh ngha nh sau:
char name[100];
Trang 111
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
int main()
{
char name[100];
char *description;
Trang 112
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Chng trnh nh trn c th c vit bi s dng calloc(), thay cho malloc nh sau:
calloc(200, sizeof(char));
int main()
{
char name[100];
char *description;
Trang 113
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Trang 114
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Khi on code trn c thc hin v thc thi vi khng c tham s no c truyn vo, n s in
ra kt qu di y:
$./a.out
Trang 115
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
if( argc == 2 )
{
printf("The argument supplied is %s\n", argv[1]);
}
else if( argc > 2 )
{
printf("Too many arguments supplied.\n");
}
else
{
printf("One argument expected.\n");
}
}
Khi on code trn c bin dch v thc hin vi mt tham s n ring r bi du cch bn
trong du trch dn kp, kt qu sau y c in ra:
$./a.out "testing1 testing2"
Trang 116
http://vietjack.com/cprogramming/index.jsp
Copyright vietjack.com
Cc ng link hu ch v C
Compile and Execute C Online Bin dch v thc thi chng trnh C trc tuyn.
Learn GNU Debugger - GDB Mt cng c dubug li trong cc chng trnh C v C++.
Unix Makefile Mt file ch dn chng trnh cch bin dch v kt ni mt chng trnh C
hoc C++.
Trang 117