面试题-找错误
Posted 947033916-fwh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题-找错误相关的知识,希望对你有一定的参考价值。
参考来自 嵌入式c的经验总结包含很多精华.pdf 中的 -----常见面试题深入剖析
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<10; i++)
{
str1[i] = ‘a‘;
}
strcpy( string, str1 );
}
// 我们可以先把strcpy函数的原型写出来 ,然后在详细分析程序中的错误。
char *strcpy(char * source ,const char * dest)
{
char *p1=source;
if(NULL==source||NULL==dest)
{
return NULL;
}
while( *dest != ‘ ‘ )
{
*source=*dest;
source++; dest++;
}
return p1;
}
解答: 函数开始时,在栈上定义了两个字符数组str,str1(末尾不会自动添加 ‘ ‘ ),接着赋值时没有考虑到末尾 ‘ ‘,使其字符数组没有以 ‘ ‘ 为结束符,这样进一步调用strcpy函数时,函数内部当时判断复制是否结束时,就是以 ‘ ‘为结束符,所以这个函数是不会结束的,会一直循环下去。
注意字符数组的越界访问。
以上是关于面试题-找错误的主要内容,如果未能解决你的问题,请参考以下文章