Giáo trình Lập trình Turbo C (Phần 1)

PhÇn 1 : turbo c n©ng cao vµ c++  
Ch−¬ng 1 : BiÕn con trá  
§1. Kh¸i niÖm chung  
Mét con trá lµ mét biÕn chøa ®Þa chØ cña mét biÕn kh¸c. NÕu mét biÕn chøa ®Þa chØ  
cña mét biÕn kh¸c tth× ta nãi biÕn thø nhÊt trá ®Õn biÕn thø hai .  
Còng nh− mäi biÕn kh¸c, biÕn con trá còng ph¶i ®−îc khai b¸o tr−íc khi dïng. D¹ng  
tæng qu¸t ®Ó khai b¸o mét biÕn con trá lµ :  
type *<tªn biÕn>  
Trong ®ã : type lµ bÊt k× kiÓu d÷ liÖu c¬ b¶n thÝch hîp nµo ®−îc chÊp nhËn trong C vµ <tªn  
biÕn> lµ tªn cña mét biÕn con trá. KiÓu d÷ liÖu c¬ b¶n x¸c ®Þnh kiÓu cña nh÷ng biÕn mµ con  
trá cã thÓ chØ ®Õn. VÝ dô khai b¸o biÕn con trá chØ ®Õn c¸c biÕn nguyªn vµ biÕn kiÓu kÝ tù:  
char *p;  
int *x,*y;  
Con trá cã mét trÞ ®Æc biÖt gäi lµ NULL. TrÞ nµy cã nghÜa lµ con trá ch−a trá tíi mét ®Þa chØ  
hîp lÖ nµo c¶. §Ó dïng ®−îc trÞ nµy chóng ta ph¶i dïng #include <stdio.h> ®Çu ch−¬ng  
tr×nh  
§2. C¸c phÐp to¸n vÒ con trá  
C cã hai phÐp to¸n ®Æc biÖt ®èi víi con trá : * vµ & . PhÐp to¸n & lµ phÐp to¸n tr¶ vÒ  
®Þa chØ trong bé nhí cña biÕn sau nã. VÝ dô :  
p = &a;  
sÏ ®Æt vµo biÕn p ®Þa chØ trong bé nhí cña biÕn a. §Þa chØ nµy kh«ng cã liªn quan g× ®Õn trÞ  
sè cña biÕn a. Nãi c¸ch kh¸c ®Þa chØ cña biÕn a kh«ng liªn quan g× ®Õn néi dung cña biÕn a.  
PhÐp to¸n * lµ phÐp to¸n tr¶ vÒ trÞ cña biÕn ®Æt t¹i ®Þa chØ ®−îc m« t¶ bëi biÕn ®i sau  
nã. VÝ dô nÕu biÕn a chøa ®Þa chØ cña biÕn b th×  
p = *a  
sÏ ®Æt trÞ sè cña biÕn b vµo biÕn p  
Ch−¬ng tr×nh 1-1 : LËp ch−¬ng tr×nh in sè 100 lªn mµn h×nh  
main()  
{
int *p,a,b;  
clrscr();  
a=100;  
p=&a;  
b=*p;  
printf("%d",b);  
getch();  
}
§3. TÇm quan träng cña d÷ liÖu khi khai b¸o con trá  
1
CÇn ph¶i b¶o ®¶m lµ con trá lu«n lu«n trá ®Õn mét kiÓu d÷ liÖu phï hîp. VÝ dô khi  
khai b¸o con trá kiÓu int , tr×nh biªn dÞch sÏ hiÓu lµ con trá bao giê còng chØ ®Õn mét biÕn  
cã ®é dµi lµ 2 byte .  
Ta xÐt mét ch−¬ng tr×nh nh− sau  
Ch−¬ng tr×nh 1-2  
main()  
{
float x=10.1,y;  
int *p;  
clrscr();  
p=&x;  
y=*p;  
printf("%f",y);  
getch();  
}
Ch−¬ng tr×nh nµy nh»m g¸n trÞ cña x cho biÕn y vµ in ra trÞ ®ã. Khi biªn dÞch ch−¬ng  
tr×nh kh«ng b¸o lçi mµ chØ nh¾c nhë :  
Suspencious pointer conversion in function main  
Tuy nhiªn ch−¬ng tr×nh kh«ng g¸n trÞ x cho y ®−îc. LÝ do lµ ta khai b¸o mét con trá  
int vµ cho nã trá tíi biÕn float x. Nh− vËy tr×nh biªn dÞch sÏ chØ chuyÓn 2 byte th«ng tin cho  
y chø kh«ng ph¶i 4 byte ®Ó t¹o ra mét sè d¹ng float .  
§4. C¸c biÓu thøc con trá  
1. C¸c phÐp g¸n con trá : Còng gièng nh− bÊt k× mét biÕn nµo kh¸c , ta cã thÓ dïng mét  
con trá ë vÒ ph¶i cña mét phÐp g¸n ®Ó g¸n trÞ cña mét con trá cho mét con trá kh¸c. VÝ dô ta  
viÕt  
Ch−¬ng tr×nh 1-3 :  
main()  
{
int x;  
int *p1,*p2;  
clrscr();  
p1 = &x;  
p2 = p1;  
printf(“ %p”,p2);  
getch();  
}
Ch−¬ng tr×nh nµy hiÖn lªn ®Þa chØ cña biÕn x ë d¹ng hex b»ng c¸ch dïng mét m· ®Þnh  
d¹ng kh¸c cña hµm printf() . %p m« t¶ r»ng sÏ hiÖn lªn mét trÞ chøa trong mét biÕn con trá  
theo d¹ng reg:xxxx víi reg lµ tªn cña mét trong c¸c thanh ghi segment cña CPU cßn xxxx lµ  
®Þa chØ offset tÝnh tõ ®Çu segment .  
2. C¸c phÐp to¸n sè häc cña con trá : Trong C , ta chØ cã thÓ dïng hai phÐp to¸n sè häc t¸c  
®éng lªn con trá lµ phÐp + vµ - . §Ó hiÓu ®−îc c¸i g× sÏ x¶y ra khi thùc hiÖn mét phÐp to¸n  
sè häc lªn con trá ta gi¶ sö p1 lµ mét con trá chØ ®Õn mét sè nguyªn cã ®Þa chØ lµ 2000 . Sau  
khi thùc hiÖn biÓu thøc  
2
p1++ ;  
con trá sÏ chØ ®Õn sè nguyªn n»m ë ®Þa chØ 2002 v× mçi khi t¨ng con trá lªn 1 nã sÏ chØ ®Õn  
sè nguyªn kÕ tiÕp mµ mçi sè nguyªn l¹i cã ®é dµi 2 byte . §iÒu nµy còng ®óng khi gi¶m . VÝ  
dô :  
p1-- ;  
sÏ trá tíi sè nguyªn ë ®Þa chØ 1998 . Nh− vËy mçi khi con trá t¨ng lªn 1 , nã sÏ chØ ®Õn d÷  
liÖu kÕ tiÕp t¹i ®Þa chØ nµo ®ã tuú theo ®é dµi cña kiÓu d÷ liÖu. C cßn cho phÐp céng hay trõ  
mét sè nguyªn víi mét con trá . BiÓu thøc :  
p1 = p1 + 9;  
sÏ lµm cho con trá chØ tíi phÇn tö thø 9 cã kiÓu lµ kiÓu mµ p1 trá tíi vµ n»m sau ph©n tö hiÖn  
thêi nã ®ang trá ®Õn . Ngoµi c¸c phÐp to¸n trªn , con trá kh«ng chÊp nhËn mét phÐp to¸n nµo  
kh¸c .  
3. So s¸nh c¸c con trá : Chóng ta cã thÓ so s¸nh 2 con trá trong mét biÓu thøc quan hÖ . VÝ  
dô cho hai p vµ q , ph¸t biÓu sau ®©y lµ hîp lÖ :  
if (p<q)  
printf(“p tro den mot vi tri bo nho thap hon q\n”);  
Tuy nhiªn cÇn nhí r»ng phÐp to¸n trªn lµ so s¸nh hai ®Þa chØ chøa trong p vµ q chø kh«ng  
ph¶i néi dung cña hai biÕn mµ p vµ q trá tíi .  
4. C¸c vÝ dô vÒ viÖc dïng con trá :  
Ch−¬ng tr×nh 1-4 : Ph©n tÝch ch−¬ng tr×nh sau :  
main()  
{
int i,j,*p;  
i=5;  
p=&i;  
j=*p;  
*p=j+2;  
}
Trong ch−¬ng tr×nh trªn ta khai b¸o hai biÕn nguyªn lµ i vµ j vµ mét biÕn con trá p trá  
tíi mét sè nguyªn . Ch−¬ng tr×nh sÏ ph©n phèi bé nhí cho 3 biÕn nµy vÝ dô t¹i c¸c ®Þa chØ  
100 , 102 vµ 104 v× mçi sè nguyªn dµi 2 byte vµ con trá mÆc nhiªn còng ®−îc m· ho¸ b»ng  
2 byte .  
100  
102  
104  
i
j
p
lÖnh i=5 cho trÞ sè cña biÕn i lµ 5  
100  
102  
104  
5
i
j
p
lÖnh p= &i lµm cho con trá chØ tíi biÕn i nghÜa lµ con trá p chøa ®Þa chØ cña biÕn i . B©y giê  
p chØ ®Õn biÕn i .  
100  
102  
104  
5
i
j
p
100  
3
lÖnh j=*p ®Æt néi dung cña biÕn do p chØ tíi (biÕn i) vµo biÕn j nghÜa lµ g¸n 5 cho j  
100  
102  
104  
5
5
100  
i
j
p
Mét trong nh÷ng vÊn ®Ò lÝ thó khi dïng con trá lµ xem néi dung bé nhí cña m¸y tÝnh  
. Ch−¬ng tr×nh sau ®©y cho phÐp ta vµo ®Þa chØ b¾t ®Çu cña RAM mµ ta muèn kh¶o s¸t vµ  
sau ®ã hiÖn lªn néi dung mçi byte ë d¹ng sè hex . Trong ch−¬ng tr×nh cã tõ kho¸ far dïng  
®Ó tham kh¶o ®Õn c¸c vÞ trÝ kh«ng n»m trong cïng mét segment .  
Ch−¬ng tr×nh 1-5 :  
main()  
{
unsigned long int start;  
char *p;  
int t;  
clrscr();  
printf("Nhap vao dia chi bat dau ma ban muon xem : ");  
scanf("%lu",&start);  
p = (char far *) start;  
for(t=0;;t++,p++)  
if(!(t%16))  
{
printf("%2x\n",*p);  
getch();  
}
}
Trong ch−¬ng tr×nh ta dïng ®Þnh d¹ng %x trong hµm printf() ®Ó in ra sè d¹ng hex .  
Dßng p = (char far *) start; dïng biÕn ®æi sè nhËp vµo thµnh mét con trá .  
§5. Con trá vµ m¶ng  
Trong ch−¬ng tr−íc chóng ta ®· thÊy c¸c vÝ dô vÒ m¶ng . Con trá th−êng ®−îc dïng  
khi xö lÝ m¶ng . Chóng ta xÐt ch−¬ng tr×nh sau :  
Ch−¬ng tr×nh 1-6 :  
main()  
{
int a[10],*pa,x;  
a[0]=11;  
a[1]=22;  
a[2]=33;  
a[3]=44;  
clrscr();  
pa=&a[0];  
x=*pa;  
pa++;  
x=*pa;  
4
x=*pa+1;  
x=*(pa+1);  
x=*++pa;  
x=++*pa;  
x=*pa++;  
}
int a[10] , *pa , x; khai b¸o mét b¶ng gåm 10 phÇn tö kiÓu int , ®−îc liÖt kª lµ  
a[0],a[1],..,a[9] , mét con trá ®Ó chØ ®Õn mét biÕn kiÓu int vµ mét biÕn kiÓu int lµ x.  
a[0] = 11. . .; tõ a[4] ®Õn a[9] ch−a ®−îc khëi g¸n . Nh− vËy chóng sÏ chøa trÞ ngÉu nhiªn  
®· cã t¹i nh÷ng vÞ trÝ bé nhí ®· ph©n phèi cho chóng .  
pa=&a[0]; ®Æt vµo pa ®Þa chØ cña phÇn tö ®Çu tiªn cña m¶ng . BiÓu thøc nµy cã thÓ viÕt ®¬n  
gi¶n lµ pa = a ; v× tªn cña mét m¶ng lu«n lu«n ®−îc tr×nh biªn dÞch coi lµ ®Þa chØ cña phÇn tö  
®Çu tiªn cña m¶ng . Tªn cña m¶ng kh«ng cã chØ sè kÌm theo cã thÓ ®−îc dïng trong ch−¬ng  
tr×nh nh− mét h»ng ®Þa chØ .  
x=*pa; ®Æt néi dung cña biÕn nguyªn mµ pa trá ®Õn vµo (tøc lµ a[0]) vµo x . Nh− vËy x = 11  
pa++; pa ®−îc t¨ng lªn 1 vµ b©y giê trá vµo phÇn tö thø 2 cña m¶ng tøc lµ chøa ®Þa chØ cña  
phÇn tö a[1]  
x=*pa ; pa trá ®Õn phÇn tö a[1] nªn x = 22  
x = *pa +1 ; x =23  
x = *(pa+1) ; tr−íc hÕt pa+1 ®−îc thùc hiÖn , nghÜa lµ pa trá vµo a[2] , sau ®ã néi dung cña  
a[2] ®−îc g¸n cho x nªn x= 33 .Tuy pa tham gia vµo phÐp to¸n nh−ng trÞ sè cña nã kh«ng  
thay ®æi .  
x = *++pa; ++ ®−îc thùc hiÖn tr−íc nªn pa trá tíi a[2] . Sau ®ã trÞ cña a[2] ®−îc g¸n cho x  
nªn x =33  
x= ++*pa; *pa ®−îc thùc hiÖn tr−íc . Do pa chØ ®Õn a[2] nªn *pa=33 vµ ++*pa=34 . Nh−  
vËy x = 34 vµ a[2]=34  
x=*pa++; néi dung cña pa (tøc 34) ®−îc ®Æt vµo x . Sau ®ã nã ®−îc t¨ng lªn 1 nªn chØ vµo  
a[3].  
Ch−¬ng tr×nh 1-7:  
main()  
{
static int num[]={92,81,70,69,58};  
int dex;  
clrscr();  
for(dex=0;dex<5;dex++)  
printf("%d\n",num[dex]);  
getch();  
}
Ch−¬ng tr×nh 1-8 :  
main()  
{
static int num[]={92,81,70,69,58};  
int dex;  
clrscr();  
for(dex=0;dex<5;dex++)  
printf("%d\n",*(num+dex));  
5
getch();  
}
Hai ch−¬ng tr×nh chØ kh¸c nhau ë biÓu thøc : *(num+dex) . C¸ch viÕt nµy t−¬ng  
®−¬ng víi num[dex] .Nãi c¸ch kh¸c truy cËp ®Õn phÇn tö cã chØ sè dex trong m¶ng num .  
Chóng ta hiÓu *(num+dex) nh− sau : ®Çu tiªn num lµ ®Þa chØ cña phÇn tö ®Çu tiªn cña m¶ng  
num vµ ta muèn biÕt trÞ sè cña phÇn tö cã chØ sè dex . V× vËy num+dex sÏ lµ ®Þa chØ cña  
phÇn tö thø dex . *(num+dex) x¸c ®Þnh néi dung cña phÇn tö (num+dex) . Tãm l¹i :  
*(array+index) t−¬ng tù array(index)  
Cã hai c¸ch truy cËp m¶ng lµ :  
theo kÝ hiÖu m¶ng &array[index]  
theo kÝ hiÖu con trá array+index  
Ch−¬ng tr×nh 1-9 : TÝnh nhiÖt ®é trung b×nh b»ng c¸ch dïng con trá  
main()  
{
float temp[40];  
float sum=0.0;  
int num,day=0;  
clrscr();  
do  
{
printf("Cho nhiet do ngay thu %d: ",day+1);  
scanf("%f",temp+day);  
}
while(*(temp+day++)>0);  
num = day-1;  
for(day=0;day<num;day++)  
sum+=*(temp+day);  
printf("Nhiet do trung binh la : %.3f",sum/num);  
getch();  
}
Trong vÝ dô trªn chóng ta ®· dïng biÓu thøc (temp+day) ®Ó truy cËp m¶ng . Tuy nhiªn viÕt  
while((*temp++)>0) v× temp lµ h»ng con trá chø kh«ng ph¶i biÕn con trá . Nh− vËy chØ ®−îc  
phÐp thay ®æi trÞ cña biÕn con trá chø kh«ng ®−îc thay ®æi trÞ cña h»ng con trá . Chóng ta  
viÕt l¹i ch−¬ng tr×nh nh− sau :  
Ch−¬ng tr×nh 1-10 :  
main()  
{
float temp[40];  
float sum=0.0;  
int num,day=0;  
float *p;  
clrscr();  
p=temp;  
do  
{
printf("Cho nhiet do ngay thu %d: ",day+1);  
6
scanf("%f",p);  
day++;  
}
while(*(p++)>0);  
p=temp;  
num=day-1;  
for(day=0;day<num;day++)  
sum+=*(p++);  
printf("Nhiet do trung binh la : %.3f",sum/num);  
getch();  
}
Trong ch−¬ng tr×nh nµy ®Þa chØ cña temp ®−îc ®−a vµo biÕn con trá p . Sau ®ã ta tham kh¶o  
tíi p gièng nh− temp . Ta dïng p trá tíi m¶ng vµ *p lµ néi dung cña ®Þa chØ ®ã . H¬n n· do p  
lµ biÕn con trá nªn ta cã thÓ t¨ng nã b»ng ph¸t biÓu p++.  
§6. Con trá vµ chuçi  
RÊt nhiÒu hµm th− viÖn trong C lµm viÖc víi chuçi theo con trá . VÝ dô hµm strchr()  
tr¶ vÒ con trá trá ®Õn lÇn xuÊt hiÖn ®Çu tiªn cña mét kÝ tù nµo ®ã trong chuçi VÝ dô : ptr =  
strchr(str,’x’)  
th× biÕn con trá ptr sÏ ®−îc g¸n ®Þa chØ cña lÇn xuÊt hiÖn kÝ tù ‘x’ ®Çu tiªn trong chuçi str .  
Sau ®©y lµ ch−¬ng tr×nh cho phÐp ta gâ vµo mét c©u vµ mét kÝ tù cÇn ®Þnh vÞ trong c©u .  
Ch−¬ng tr×nh sÏ cho ta :  
- ®Þa chØ b¾t ®Çu cña chuçi  
- ®Þa chØ cña kÝ tù cÇn ®Þnh vÞ  
- ®é lÖch so víi ®iÓm ®Çu chuçi  
Ch−¬ng tr×nh 1-11 :  
#include<string.h>  
main()  
{
char ch,line[81],*ptr;  
clrscr();  
printf("Cho mot cau : ");  
gets(line);  
printf("Cho ki tu can tim : ");  
ch=getche();  
ptr=strchr(line,ch);  
printf("\nChuoi bat dau tai dia chi %u.\n",line);  
printf("Ki tu xuat hien lan dau tai %u.\n",ptr);  
printf("Do la vi tri %d",(ptr-line+1));  
getch();  
}
Chuçi còng cã thÓ ®−îc khëi t¹o b»ng con trá . Ta xÐt vÝ dô sau  
Ch−¬ng tr×nh 1-11 :  
main()  
{
char *chao="Xin chao !";  
7
char ten[30];  
clrscr();  
printf("Cho ten cua ban : ");  
gets(ten);  
printf(chao);  
puts(ten);  
getch();  
}
Trong ch−¬ng tr×nh trªn ta ®· khëi t¹o chuçi b»ng ph¸t biÓu  
char *chao = “ Xin chao !”  
thay cho  
static char chao[]=” Xin chao !”  
C¶ hai c¸ch ®Òu cho cïng mét kÕt qu¶ . Trong ph−¬ng ¸n dïng con trá , chao lµ biÕn con trá  
nªn cã thÓ thay ®æi ®−îc . VÝ dô ph¸t biÓu :  
puts(++chao)  
sÏ cho kÕt qu¶ : in chao !  
NÕu ta cã mét m¶ng chuçi ta còng cã thÓ dïng m¶ng con trá trá tíi m¶ng chuçi nµy .  
Ta khëi t¹o chóng gièng nh− khëi t¹o biÕn con trá ®¬n .  
Ch−¬ng tr×nh 1-12 :  
#define  
main()  
{
max 5  
int dex;  
int enter=0;  
char name[40];  
static char *list[max]=  
{
"Hung",  
"Ngan",  
"Van",  
"Hoa",  
"Tien"  
};  
clrscr();  
printf("Cho ten cua ban : ");  
gets(name);  
for(dex=0;dex<max;dex++)  
if (strcmp(list[dex],name)==0)  
enter=1;  
if (enter==1)  
printf("Ban da dang ki hoc lop C");  
else  
printf("Ban chua dang ki vao lop");  
getch();  
}
Ph¸t biÓu char *list[max] nãi r»ng list lµ mét m¶ng con trá gåm max phÇn tö chØ tíi  
c¸c kÝ tù . Chóng ta xÐt tiÕp mét vÝ dô nh− sau :  
8
Ch−¬ng tr×nh 1-13 : NhËp vµo mét d·y tªn vµ s¾p xÕp l¹i ®óng thø tù a,b,c  
#define maxnum 38  
#define maxlen 81  
main()  
{
static char name[maxnum][maxlen];  
char *ptr[maxnum];  
char *temp;  
int count = 0;  
int in,out;  
clrscr();  
while (count<maxnum)  
{
printf("Ban cho ten : ");  
gets(name[count]);  
if (strlen(name[count])==0)  
break;  
ptr[count++]=name[count];  
}
for (out=0;out<count-1;out++)  
for (in=out+1;in<count;in++)  
if (strcmp(ptr[out],ptr[in])>0)  
{
temp=ptr[in];  
ptr[in]=ptr[out];  
ptr[out]=temp;  
}
printf("Danh sach da sap xep :\n");  
for(out=0;out<count;out++)  
printf("Ten thu %d : %s\n",out+1,ptr[out]);  
getch();  
}
Ch−¬ng tr×nh nµy dïng c¶ m¶ng chuçi vµ m¶ng con trá chuçi . Con trá n»m trong  
m¶ng ®−îc khai b¸o nh− sau :  
char *ptr[maxnum]  
chuçi n»m trong m¶ng hai chiÒu  
static char name[maxnum][maxlen]  
Do ta kh«ng biÕt mét chuçi dµi bao nhiªu nªn ph¶i dïng m¶ng chuçi name cã tèi ®a  
maxnum phÇn tö , mçi phÇn tö cã maxlen kÝ tù . Khi nhËp chuçi ph¸t biÓu  
ptr[count++] = name[count  
sÏ g¸n ®Þa chØ cña mçi chuçi ®−îc cÊt gi÷ trong m¶ng name[][] vµo phÇn tö con trá ptr . Sau  
®ã m¶ng con trá nµy ®−îc s¾p xÕp dùa trªn m¶ng name[][] nh−¬ng m¶ng name[][] kh«ng  
thay ®æi g× c¶ .  
Ng«n ng÷ C cã thÓ xö lÝ c¸c thµnh phÇn cña m¶ng nh− mét m¶ng . Cô thÓ C cã thÓ  
xem mét dßng cña m¶ng hai chiÒu nh− lµ mét m¶ng mét chiÒu. ®iÒu nµy rÊt tiÖn lîi nh− ta  
®É thÊy trong ch−¬ng tr×nh trªn . C©u lÖnh ptr[count++] = name[count hoµn toµn hîp lÝ v× vÕ  
9
ph¶i chÝnh lµ ®Þa chØ cña m¶ng name[count] vµ m¶ng nµy lµ mét thµnh phÇn cña m¶ng  
name[][] lµ mét m¶ng hai chiÒu . Ta xem l¹i khai b¸o :  
static char name[maxnum][maxlen]  
râ rµng ta cã thÓ xem ®©y lµ mét m¶ng mét chiÒu cã maxnum chuçi vµ tham kh¶o tíi phÇn  
tö cña m¶ng mét chiÒu b»ng 1 chØ sè . VÝ dô :  
name[count] víi count<=maxnum nh− thÕ  
name[0] : ®Þa chØ cña chuçi 1  
name[1] : ®Þa chØ cña chuçi 2  
§7. Con trá trá ®Õn con trá  
Chóng ta cã mét ch−¬ng tr×nh in ra mét b¶ng sè ®−îc viÕt nh− sau :  
Ch−¬ng tr×nh 1-14:  
#define row 4  
#define col 5  
main()  
{
static int table[row][col]={  
{13,15,17,19,21},  
{20,22,24,26,28},  
{31,33,35,37,39},  
{40,42,44,46,48}  
};  
int c=10;  
int i,j;  
clrscr();  
for(i=0;i<row;i++)  
for(j=0;j<col;j++)  
table[i][j]+=c;  
for(i=0;i<row;i++)  
{
for(j=0;j<col;j++)  
printf("%5d",table[i][j]);  
printf("\n");  
}
getch();  
}
Trong ch−¬ng tr×nh trªn ta dïng kÝ hiÖu m¶ng. B©y giê ta muèn viÕt ch−¬ng tr×nh  
dïng kÝ hiÖu con trá thay cho kÝ hiÖu m¶ng. VËy th× lµm thÕ nµo ®Ó m« t¶ table[i][j] b»ng  
con trá . Ta thÊy r»ng :  
- table lµ ®Þa chØ cña phÇn tö ®Çu tiªn cña toµn bé m¶ng , gi¶ ®Þnh lµ 1000  
- do ®©y lµ m¶ng nguyªn nªn mçi phÇn tö chiÕm 2 byte vµ mçi dßng chiÕm 10 byte v×  
cã 5 phÇn tö . Nh− vËy ®Þa chØ cña hai dßng liÒn nhau c¸ch nhau 10 byte  
- do cã thÓ xem mçi dßng lµ mét m¶ng mét chiÒu nªn c¸c m¶ng mét chiÒu liÒn nhau  
c¸ch nhau 10 byte  
- tr×nh biªn dÞch biÕt sè cét trong m¶ng qua khai b¸o nªn nã sÏ hiÓu table+1 lµ ®em  
table ( trÞ 1000 ) céng víi 10 byte thµnh 1010 . T−¬ng tù table+2 cho ta 1020 .  
1000 13 15 17 19 21  
table[0]  
10  
table==1000 1010 20 22 24 26 28  
1020 31 33 35 37 39  
table[1]  
table[2]  
table[3]  
1030 40 42 44 46 48  
§Ó tham kh¶o ®Õn tõng phÇn tö cña dßng tr−íc hÕt ta l−u ý ®Þa chØ cña m¶ng còng lµ  
®Þa chØ cña phÇn tö ®Çu tiªn cña m¶ng . VÝ dô víi m¶ng mét chiÒu a[size] th× a vµ a[0] lµ nh−  
nhau . Trë l¹i m¶ng hai chiÒu ®Þa chØ cña m¶ng mét chiÒu t¹o bëi dßng thø 3 cña m¶ng  
table[][] lµ table[2] hay table+2 .Trong kÝ hiÖu con trá ®Þa chØ cña phÇn tö ®Çu tiªn cña m¶ng  
mét chiÒu nµy lµ &table[2][0] hay *(table+2) . C¶ hai c¸ch viÕt table+2 vµ *(table+2) ®Òu  
tham kh¶o néi dung cña cïng mét « nhí (1020) . NÕu céng 1 vµo table +3 ®Ó cã table+3 th×  
ta nhËn ®−îc ®Þa chØ cña dßng thø 4 trong m¶ng table[][] . NÕu céng 1 vµo *(table+2) ®Ó cã  
*(table+2)+1 th× cã ®Þa chØ cña phÇn tö thø 2 trong dßng thø 3 cña m¶ng table[][] . Tãm l¹i :  
table[i] = *(table+i)  
&table[i] = table+i  
table[i][j] = *(*table+i)+j)  
&table[i][j] = (*(table+i)+j)  
Nh− vËy ch−¬ng tr×nh trªn ®−îc viÕt l¹i nh− sau :  
Ch−¬ng tr×nh 1-15 :  
#define row 4  
#define col 5  
main()  
{
static int table[row][col]={  
{13,15,17,19,21},  
{20,22,24,26,28},  
{31,33,35,37,39},  
{40,42,44,46,48}  
};  
int c=10;  
int i,j;  
clrscr();  
for(i=0;i<row;i++)  
for(j=0;j<col;j++)  
*(*(table+i)+j)+=c;  
for(i=0;i<row;i++)  
{
for(j=0;j<col;j++)  
printf("%5d",*(*(table+i)+j));  
printf("\n");  
}
getch();  
}
Bµi tËp : LËp ch−¬ng tr×nh tÝnh hiÖu ®é dµi hai chuçi nhËp vµo tõ bµn phÝm  
LËp ch−¬ng tr×nh x¸c ®Þnh gi¸ trÞ cùc ®¹i cña n sè nhËp vµo tõ bµn phÝm  
LËp ch−¬ng tr×nh qu¶n lÝ hµng gåm ngµy , l−îng nhËp ,l−îng xuÊt vµ hµng tån kho  
11  
ch−¬ng 2 : Bµn phÝm vµ cursor  
§1. C¸c m· phÝm më réng  
Chóng ta ®· thÊy bµn phÝm t¹o c¸c m· th«ng th−êng cho c¸c ch÷ c¸i, c¸c sè vµ dÊu  
chÊm c©u. C¸c phÝm nµy ®Òu t¹o m· ASCII dµi 1 byte. Tuy nhiªn cã nhÒu phÝm vµ tæ hîp  
phÝm kh«ng ®−îc biÓu diÔn b»ng bé kÝ tù dµi mét byte nµy vÝ dô nh− c¸c phÝm chøc n¨ng tõ  
F1 ®Õn F10 hay c¸c phÝm ®iÒu khiÓn cursor . C¸c phÝm nµy ®−îc m« t¶ b»ng mét m· dµi 2  
byte. Byte ®Çu tiªn cã trÞ sè lµ 0 vµ byte thø hai lµ trÞ sè m· cña phÝm nµy .  
1. NhËn biÕt c¸c m· më réng : Mét m· më réng ph¶i cã 2 byte vµ byte ®Çu tiªn lµ 0 nªn  
ch−¬ng tr×nh cÇn ph¶i ®äc 2 byte nµy . Sau ®©y lµ ®o¹n ch−¬ng tr×nh nhËn biÕt c¸c m· më  
réng Ch−¬ng tr×nh 2-1:  
#include <string.h>  
main()  
{
char key,key1;  
clrscr();  
while ((key=getche())!='x')  
if (key==0)  
{
key1=getch();  
printf("%3d%3d",key,key1);  
}
else  
printf("%3d",key);  
}
Ch−¬ng tr×nh nµy sÏ hiÖn thÞ c¸c m· cña c¸c phÝm ®−îc gâ cho dï chóng lµ m· mét  
byte hay 2 byte . Ta dïng hµm getch() ®Ó kh«ng hiÓn thÞ kÝ tù võa gâ lªn mµn h×nh . Trong  
biÓu thøc kiÓm tra cña while ch−¬ng tr×nh ®äc m· ®Çu tiªn . NÕu m· nµy lµ 0 , ch−¬ng tr×nh  
biÕt ®ã lµ m· më réng vµ ®äc tiÕp phÇn thø hai cña m· b»ng hµm getch() . Sau ®ã nã hiÓn thÞ  
c¶ hai phÇn . NÕu phÇn ®Çu kh¸c kh«ng ch−¬ng tr×nh sÏ cho r»ng ®©y kh«ng ph¶i lµ m· më  
réng vµ hiÖn thÞ m· nµy .  
2. §o¸n nhËn m· më réng : Mét c¸ch ®o¸n nhËn m· më réng lµ dïng ph¸t biÓu switch nh−  
trong ch−¬ng tr×nh sau :  
Ch−¬ng tr×nh 2-2 :  
main()  
{
int key,key1;  
clrscr();  
while ((key=getche())!='X')  
if (key==0)  
{
key1=getch();  
switch (key1)  
{
case 59 : printf("Phim F1 duoc nhan\n");  
break;  
case 60 : printf("Phim F2 duoc nhan\n");  
12  
break;  
case 75 : printf("Phim left arrow duoc nhan\n");  
break;  
default : printf("Phim mo rong khac duoc nhan\n");  
break;  
}
}
else  
printf("%3d",key);  
getch();  
}
§2. §iÒu khiÓn cursor vµ ansi.sys  
1.Kh¸i niÖm chung :TËp tin ansi.sys cung cÊp tËp ®· chuÈn ho¸ c¸c m· ®iÒu khiÓn cursor .  
ANSI - America National Standards Institut. §Ó b¶o ®¶m sù cµi ®Æt cña tËp tin ansi.sys trong  
tËp tin config.sys ta ®Æt dßng lÖnh :  
device = ansi.sys  
2. §iÒu khiÓn cursor b»ng ansi.sys : ansi.sys dïng d·y escape ®Ó ®iÒu khiÓn con nh¸y .  
Chuçi escape gåm nhiÒu kÝ tù ®Æc biÖt . Ansi.sys t×m chuçi escape nµy qua thµnh phÇn cña  
chuçi trong hµm prinft() vµ gi¶i m· c¸c lÖnh theo sau nã . Chuçi escape lu«n lu«n gièng  
nhau , gåm kÝ tù kh«ng in ®−îc “\x1B”(lµ m· cña kÝ tù escape) sau ®ã lµ dÊu [ . Sau chuçi  
escape cã thÓ cã mét hay nhiÒu kÝ tù . Nhê chuçi nµy con nh¸y cã thÓ ®i lªn , xuãng , sang  
tr¸i , ph¶i hay ®Þnh vÞ t¹i mét vÞ trÝ nµo ®ã . VÝ dô ®Ó di chuyÓn con nh¸y xuèng d−íi ta dïng  
chuçi “\x1B[B”  
Ch−¬ng tr×nh 2-3 : ViÕt ch−¬ng tr×nh in mét chuçi theo ®−êng chÐo :  
main()  
{
clrscr();  
printf("Cho mot chuoi tan cung bang dau .:");  
while (getche()!='.')  
printf("\x1B[B");  
getch();  
}
3. Dïng #define vµ chuçi escape : Chuçi “\x1B[B” ®−îc m· ho¸ vµ rÊt khã ®äc . Khi dïng  
c¸c ch−¬ng tr×nh phøc t¹p nªn ghi chó râ rµng b»ng c¸ch dïng dÉn h−íng #define .  
Ch−¬ng tr×nh 2-4 :  
#define c_down "\x1B[B"  
main()  
{
while (getche()!='.')  
printf(c_down);  
getch();  
}
Tãm t¾t c¸c lÖnh ®iÒu khiÓn con nh¸y  
M·  
C«ng dông  
13  
“[2J”  
“[K”  
“[A”  
“[B”  
“[C”  
“[D”  
Xo¸ mµn h×nh vµ ®−a con nh¸y vÒ home  
Xo¸ ®Õn cuèi dßng  
§−a con nh¸y lªn mét dßng  
§−a con nh¸y xuèng mét dßng  
§−a con nh¸y sang ph¶i mét cét  
§−a con nh¸y sang tr¸i mét cét  
“[%d;%df §−a con nh¸y ®Õn vÞ trÝ nµo ®ã  
“[s”  
CÊt gi÷ vÞ trÝ con nh¸y  
“[u”  
Kh«i phôc vÞ trÝ con nh¸y  
“[%dA”  
“[%dB”  
“[%dC”  
“[%dD”  
§−a con nh¸y lªn mét sè dßng  
§−a con nh¸y xuèng mét sè dßng  
§−a con nh¸y sang ph¶i mét sè cét  
§−a con nh¸y sang tr¸i mét dßng vµ nhiÒu cét  
4. §iÒu khiÓn con nh¸y tõ bµn phÝm : Sau ®©y lµ ch−¬ng tr×nh cho phÐp b¹n vÏ c¸c h×nh  
®¬n gi¶n trªn mµn h×nh  
Ch−¬ng tr×nh 2-5 :  
#define clear "\x1B[2J"  
#define c_left "\x1B[D"  
#define c_right "\x1B[C"  
#define c_up "\x1B[A"  
#define c_down "\x1B[B"  
#define l_arrow 75  
#define r_arrow 77  
#define u_arrow 72  
#define d_arrow 80  
#define across 205  
#define updown 186  
main()  
{
int key;  
printf(clear);  
while ((key=getch())==0)  
{
key=getche();  
switch (key)  
{
case l_arrow : printf(c_left);  
putch(across);  
break;  
case r_arrow : printf(c_right);  
putch(across);  
break;  
case u_arrow : printf(c_up);  
putch(updown);  
break;  
case d_arrow : printf(c_down);  
putch(updown);  
break;  
}
14  
printf(c_left);  
}
getch();  
}
5. §−a con nh¸y ®Õn vÞ trÝ bÊt k× : Chuçi escape d¹ng sau sÏ ®−a con nh¸y ®Õn vÞ trÝ bÊt k×  
trªn mµn h×nh  
Sè hex 1B cña kÝ tù escape  
Sè hiÖu dßng  
Sè hiÖu cét  
Ch÷ c¸i f  
“ \ x 1 B [ 10 ; 40 f ”  
Sau ®©y lµ mét ch−¬ng tr×nh vÝ dô vÒ c¸ch dïng chuçi ®ã  
Ch−¬ng tr×nh 2-6 :  
#define true 1  
#define clear "\x1B[2J"  
#define erase "\x1B[K"  
main()  
{
int row=1,col=1;  
printf(clear);  
while(true)  
{
printf("\x1B[23;1f");  
printf(erase);  
printf("Nhap vao so dong va so cot dang(20,40)");  
scanf("%d%d",&row,&col);  
printf("\x1B[%d;%df",row,col);  
printf("*(%d,%d)",row,col);  
}
}
§6. Tr×nh bµy chç bÊt k× trªn mµn h×nh  
Sau ®©y lµ ch−¬ng tr×nh dïng chuçi ®Þnh vÞ cursor .Ch−¬ng tr×nh cung cÊp hai menu  
®Þnh vÞ däc theo mµn h×nh .  
Ch−¬ng tr×nh 2-7 :  
#define size1 5  
#define size2 4  
#define clear "\x1B[2J"  
main()  
{
static char *menu1[]=  
{
"Open",  
"Close"  
"Save"  
"Print"  
"Quit"  
15  
};  
static char *menu2[]=  
{
"Cut",  
"Copy",  
"Paste",  
"Reformat"  
};  
void display(char *[],int ,int);  
printf(clear);  
display(menu1,size1,20);  
display(menu2,size2,20);  
getch();  
}
void display(char *arr[],int size,int hpos)  
{
int j;  
for (j=0;j<size;j++)  
{
printf("\x1B[%d",j+1,hpos);  
printf("%s\n",*(arr+j));  
}
}
C¸c môc cho tõng menu ®−îc cÊt gi÷ trong m¶ng c¸c con trá trá tíi chuçi . Sau ®ã  
ch−¬ng tr×nh dïng hµm ®Ó hiÓn thÞ menu . Hµm ®Þnh vÞ con nh¸y nhê d·y ®Þnh vÞ ANSI.SYS  
, lÊy sè hiÖu dßng tõ sè hiÖu cña môc trªn menu vµ sè hiÖu cét ®−îc ch−¬ng tr×nh chÝnh  
truyÒn sang .  
§7. C¸c thuéc tÝnh cña kÝ tù  
Mçi kÝ tù hiÓn thÞ trªn mµn h×nh ®−îc cÊt gi÷ trong hai byte bé nhí . Mét byte lµ m·  
th«ng th−êng cña kÝ tù vµ byte kia lµ thuéc tÝnh cña nã . Byte thuéc tÝnh Ên ®Þnh diÖn m¹o  
cña kÝ tù nh− chíp nh¸y , ®Ëm , g¹ch d−íi , ®¶o mµu . Ta cã thÓ dïng chuçi escape cña  
ANSI ®Ó Ên ®Þnh thuéc tÝnh cña kÝ tù . Theo sau chuçi kÝ tù escape vµ ngoÆc vu«ng lµ con sè  
vµ ch÷ m . Sau ®©y lµ danh s¸ch c¸c sè t¹o hiÖu øng trªn mµn h×nh :  
2,3,6 mµu tèi  
0
1
4
5
7
8
t¾t thuéc tÝnh , th−êng lµ mµu tr¾ng trªn nÒn ®en  
®Ëm  
g¹ch d−íi  
chíp nh¸y  
®¶o mµu  
kh«ng thÊy ®−îc  
Chuçi escape cã d¹ng nh− sau :  
Sè hex 1B cña kÝ tù escape  
Sè cho biÕt kiÓu thuéc tÝnh  
16  
“ \ x 1 B [ 10 m”  
Chuçi nµy ®−îc gëi trong tiÕn tr×nh hiÓn thÞ . Mçi khi bËt mét thuéc tÝnh , tÊt c¶ c¸c kÝ tù sÏ  
hiÓn thÞ theo thuéc tÝnh míi cho ®Õn khi nã t¾t ®i . Sau ®©y lµ ch−¬ng tr×nh biÓu diÔn c¸c  
thuéc tÝnh cña kÝ tù  
Ch−¬ng tr×nh 2-8 :  
#define NORMAL "\x1B[Om"  
#define BOLD  
#define UNDER  
#define BLINK  
"\x1B[1m"  
"\x1B[4m"  
"\x1B[5m"  
#define REVERSE "\x1B[7m"  
main()  
{
printf("normal%s blink %s normal \n\n",BLINK,NORMAL);  
printf("normal%s bold %s normal \n\n",BOLD,NORMAL);  
printf("normal%s underline %s normal \n\n",UNDER,NORMAL);  
printf("normal%s reversed %s normal \n\n",REVERSE,NORMAL);  
printf("%s%s reversed and blink %s \n\n",BLINK,REVERSE,NORMAL);  
}
§8. Menu  
Ta x©y dùng mét ch−¬ng tr×nh gåm 5 môc menu lµ Open ,Close,Save,Print,Quit . C¸c  
phÝm mòi tªn lªn xuèng sÏ di chuyÓn vÖt s¸ng ®Õn c¸c môc cÇn chän.PhÝm INS ®Ó chän vµ  
thùc hiÖn c«ng viÖc t−¬ng øng . Môc Quit sÏ kÕt thóc ch−¬ng tr×nh .  
Ch−¬ng tr×nh 2-9 :  
#define true 1  
#define num 5  
#define clear "\x1B[2J"  
#define erase "\x1B[K"  
#define normal  
#define reverse  
#define home"\x1B[1;1f"  
#define bottom "\x1B[20:1f"  
u_arro 72  
"\x1B[Om"  
"\x1B[7m"  
#define  
#define color "\x1B[4m"  
/*#define l_arro  
#define r_arro  
#define d_arro 80  
#define insert83  
main()  
75  
77*/  
{
static char *item[num]=  
{
"Open",  
"Close",  
"Save",  
"Print",  
"Quit"  
};  
17  
int curpos;  
int code;  
void display(char *[],int,int);  
int getcode(void);  
void action(int);  
printf(clear);  
curpos=0;  
while(true)  
{
display(item,num,curpos);  
code=getcode();  
switch (code)  
{
case u_arro:if (curpos>0)  
--curpos;  
break;  
case d_arro:if (curpos<num-1)  
++curpos;  
break;  
case insert:action(curpos);  
break;  
}
}
}
void display(char *arr[],int size,int pos)  
{
int j;  
printf(home);  
for (j=0;j<size;j++)  
{
if (j==pos)  
printf(reverse);  
printf("%s\n",*(arr+1));  
printf("%s%5s",color,*(arr+j));  
printf(normal);  
printf("%s"," ");  
printf(home);  
}
}
int getcode()  
{
int key;  
while(getch()!=0)  
;
return (getch());  
}
void action(int pos)  
18  
{
switch(pos)  
{
case 0: printf("Open");  
break;  
case 1: printf("Close");  
break;  
case 2: printf("Save");  
break;  
case 3: printf("Print");  
break;  
case 4: exit();  
}
}
§9. G¸n phÝm chøc n¨ng b»ng ansi.sys  
Nhê g¸n chuçi vµo phÝm chøc n¨ng ta cã thÓ cÊu h×nh l¹i bµn phÝm ®amg dïng .  
D¹ng thøc cña chuçi g¸n phÝm chøc n¨ng nh− sau :  
m· escape gåm 1xB[  
byte thø nhÊt cña m· më réng cho phÝm chøc n¨ng  
dÊu ;  
byte thø hai cña m· më réng cho phÝm chøc n¨ng  
dÊu ;  
chuçi cÇn g¸n  
dÊu ;  
xuèng dßng  
ch÷ p  
\ x 1 B [ 0 ; 68 ; “s” ; 13 p  
Ch−¬ng tr×nh 2-10:  
main()  
{
char str[81];  
int key;  
clrscr();  
printf("Nhap vao mot so cua phim chuc nang :");  
gets(str);  
key=atoi(str);  
printf("Nhap vao mot chuoi de gan phim nay : ");  
gets(str);  
printf("\x1B[0;%d;\"%s\";13p",key+58,str);  
}
19  
Ch−¬ng 3 : NhËp vµ xuÊt d÷ liÖu  
§1. Kh¸i niÖm chung  
1. Kh¸i niÖm :Tr−íc ®©y chóng ta ®· xÐt viÖc nhËp d÷ liÖu tõ bµn phÝm. Trong nhiÒu tr−êng  
hîp thùc tÕ , ®Ó thuËn lîi , chóng ta ph¶i nhËp d÷ liÖu tõ c¸c tËp tin trªn ®Üa . C¸c hµm th−  
viÖn cña C cho phÐp truy cËp tËp tin vµ chia lµ 2 cÊp kh¸c nhau :  
- c¸c hµm cÊp 1 lµ c¸c hµm ë cÊp thÊp nhÊt , truy cËp trùc tiÕp ®Õn c¸c tËp tin trªn  
®Üa.C kh«ng cung cÊp vïng nhí ®Öm cho c¸c hµm nµy  
- c¸c hµm cÊp 2 lµ c¸c hµm truy xuÊt tËp tin cao h¬n , do chóng ®−îc C cung cÊp  
vïng nhí ®Öm  
§èi víi c¸c hµm cÊp 1 , tËp tin ®−îc xem lµ khèi c¸c byte liªn tôc do ®ã khi muèn  
truy cËp mÉu tin cô thÓ th× ph¶i tÝnh to¸n ®Þa chØ cña mÉu tin vµ nh− vËy c«ng viÖc vÊt v¶  
h¬n . Ngoµi ra ph¶i cung cÊp vïng nhí ®Öm cho kiÓu ®äc ghi nµy. §èi víi c¸c hµm cÊp hai  
c«ng viÖc nhÑ nhµng h¬n do :  
- tr×nh biªn dÞch tù ®éng cung cÊp vïng kÝ øc ®Öm cho chóng  
- cã thÓ truy xuÊt c¸c mÉu tin mµ kh«ng gÆp khã kh¨n nh− víi c¸c hµm cÊp 1  
Trong C , c¸c th«ng tin cÇn thiÕt cho c¸c hµm xuÊt nhËp cÊp 2 ®−îc ®Æt trong tËp tin  
stdio.h cßn c¸c th«ng tin vÒ hµm nhËp xuÊt cÊp 1 th× ë trong tËp tin io.h  
2. Stream vµ c¸c tËp tin : Ta ph¶i ph©n biÖt hai thuËt ng÷ lµ stream vµ file .HÖ thèng xuÊt  
nhËp cña C cung cÊp mét kh«ng gian t−ëng t−îng gi÷a ng−êi lËp tr×nh vµ c¸c thiÕt bÞ ®−îc  
dïng . CÊp trung gian t−ëng t−îng nµy gäi lµ stream vµ thiÕt bÞ cô thÓ lµ tËp tin .  
a. C¸c streams : Trong m¸y tÝnh ta dïng 2 lo¹i stream : v¨n b¶n vµ nhÞ ph©n . Mét  
stream v¨n b¶n lµ mét lo¹t kÝ tù ®−îc tæ chøc thµnh dßng mµ mçi dßng ®−îc kÕt thóc b»ng  
kÝ tù xuèng dßng newline(“\n”) . Khi ghi , mét kÝ tù chuyÓn dßng LF(m· 10) ®−cî chuyÓn  
thµnh 2 kÝ tù CR( m· 13) vµ LF . Khi ®äc 2 kÝ tù liªn tiÕp CR vµ LF trªn tËp tin chØ cho ta  
mét kÝ tù LF .  
Mét stream nhÞ ph©n lµ mét lo¹t c¸c byte .  
a. C¸c tËp tin : Trong C ,mét tËp tin lµ mét kh¸i niÖm logic mµ hÖ thèng cã thÓ ¸p  
dông cho mäi thø tõ c¸c tËp tin trªn ®Üa cho ®Õn c¸c terminal .  
Khi b¾t ®Çu thùc hiÖn  
ch−¬ng tr×nh , m¸y tÝnh më 3 stream v¨n b¶n ®· ®−îc ®Þnh nghÜa tr−íc lµ stdin , stdout vµ  
stderr . §èi víi hÇu hÕt c¸c hÖ thèng , c¸c thiÕt bÞ nµy lµ console  
§2. NhËp xuÊt chuÈn  
1. NhËp xuÊt kÝ tù , chuçi kÝ tù , ®Þnh d¹ng vµ b¶n ghi : NhËp xuÊt cÊp 2(nhËp xuÊt chuÈn  
) cung cÊp 4 c¸ch ®äc vµ ghi d÷ liÖu kh¸c nhau (ng−îc l¹i nhËp xuÊt c©p1 chØ dïng 1 trong 4  
c¸ch nµy) .  
Tr−íc hÕt d÷ liÖu cã thÓ ®äc ghi mçi lÇn mét kÝ tù , t−¬ng tù nh− c¸ch lµm viÖc cña  
putchar() vµ getche() ®Ó ®äc d÷ liÖu tõ bµn phÝm vµ hiÓn thÞ lªn mµn h×nh .  
Thø hai , d÷ liÖu cã thÓ nhËp xuÊt theo chuçi b»ng c¸c dïng c¸c hµm gets() vµ puts()  
Thø ba , d÷ liÖu cã thÓ ®−îc nhËp vµ xuÊt theo khu«n d¹ng b»ng c¸c hµm fprintf() vµ  
fscanf()  
Thø t− , d÷ liÖu ®−îc ®äc vµ ghi theo khèi cã chiÒu dµi cè ®Þnh th−êng dïng l−u tr÷  
m¶ng hay cÊu tróc b»ng c¸c hµm fread() vµ fwrite() . Tãm l¹i :  
C¸c hµm dïng chung cho hai kiÓu nhÞ ph©n vµ v¨n b¶n  
fopen : dïng më tËp tin  
21  
Tải về để xem bản đầy đủ
pdf 85 trang yennguyen 25660 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình Turbo C (Phần 1)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_lap_trinh_turbo_c_phan_1_turbo_c_nang_cao_va_c.pdf