码迷,mamicode.com
首页 > 其他好文 > 详细

面试题-找错误

时间:2019-01-08 12:13:49      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:程序   总结   循环   参考   字符数组   str   string   定义   面试题   

参考来自  嵌入式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 != ‘\0‘ )

   {

  *source=*dest;

  source++; dest++;

  }

return p1;

}

解答: 函数开始时,在栈上定义了两个字符数组str,str1(末尾不会自动添加 ‘\0‘ ),接着赋值时没有考虑到末尾 ‘\0‘,使其字符数组没有以 ‘\0‘ 为结束符,这样进一步调用strcpy函数时,函数内部当时判断复制是否结束时,就是以 ‘\0‘为结束符,所以这个函数是不会结束的,会一直循环下去。

注意字符数组的越界访问。

 

面试题-找错误

标签:程序   总结   循环   参考   字符数组   str   string   定义   面试题   

原文地址:https://www.cnblogs.com/947033916-fwh/p/10233582.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!