- 相關(guān)推薦
C程序找錯(cuò)題
找錯(cuò)題
試題1:
void test1()
{
char string[10];
char* str1 = "0123456789";
strcpy( string, str1 );
}
復(fù)制代碼
試題2:
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<10; i++)
{
str1 = 'a';
}
strcpy( string, str1 );
}
復(fù)制代碼
試題3:
void test3(char* str1)
{
char string[10];
if( strlen( str1 ) <= 10 )
{
strcpy( string, str1 );
}
}
復(fù)制代碼
解答:
試題1字符串str1需要11個(gè)字節(jié)才能存放下(包括末尾的’\0’),而string只有10個(gè)字節(jié)的空間,strcpy會導(dǎo)致數(shù)組越界;
對試題2,如果面試者指出字符數(shù)組str1不能在數(shù)組內(nèi)結(jié)束可以給3分;如果面試者指出strcpy(string, str1)調(diào)用使得從str1[url=]內(nèi)存[/url]起復(fù)制到string內(nèi)存起所復(fù)制的字節(jié)數(shù)具有不確定性可以給7分,在此基礎(chǔ)上指出庫函數(shù)strcpy工作方式的給10分;
對試題3,if(strlen(str1) <= 10)應(yīng)改為if(strlen(str1) < 10),因?yàn)閟trlen的結(jié)果未統(tǒng)計(jì)’\0’所占用的1個(gè)字節(jié)。
剖析:
考查對基本功的掌握:
(1)字符串以’\0’結(jié)尾;
(2)對數(shù)組越界把握的敏感度;
(3)庫函數(shù)strcpy的工作方式,如果編寫一個(gè)標(biāo)準(zhǔn)strcpy函數(shù)的總分值為10,下面給出幾個(gè)不同得分的答案:
【C程序找錯(cuò)題】相關(guān)文章:
C程序員實(shí)習(xí)日記05-29
C語言程序設(shè)計(jì) (一)05-11
C語言程序設(shè)計(jì)學(xué)習(xí)技巧08-30
C++程序員崗位職責(zé)05-06
c程序設(shè)計(jì)心得體會04-03
C程序員英文簡歷表格06-06
學(xué)習(xí)二級c語言程序設(shè)計(jì)的方法08-30
名企招聘c++程序員筆試題07-31
C++程序員英文簡歷表格06-04
名企招聘C++程序員筆試題及分析07-31