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 nhmä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á cha 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 nhsau  
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. NhvË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 nhbÊ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 . NhvË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] cha ®îc khëi g¸n . NhvË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 nhmé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 . NhvË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 nhng 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) nhsau : ®Ç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 t 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á . NhvË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 nhsau :  
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 nhtemp . 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 thviÖ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 nhkhë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ô nhsau :  
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 nhsau :  
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 nhmét m¶ng . Cô thÓ C cã thÓ  
xem mét dßng cña m¶ng hai chiÒu nhlµ mét m¶ng mét chiÒu. ®iÒu nµy rÊt tiÖn lîi nhta  
®É 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 nhthÕ  
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 nhsau :  
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ö . NhvË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 lu ý ®Þ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)  
NhvËy ch¬ng tr×nh trªn ®îc viÕt l¹i nhsau :  
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ô nhc¸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ù nhchí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 nhsau :  
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 nhsau :  
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µ nhvË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 nhví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ù nhc¸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 lu 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 13/04/2022 6120
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