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