正文

C/C++ 试题剖析(2)2006-11-09 22:44:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/colormoon/20151.html

分享到:

试题3:void test3(char* str1){ char string[10]; if( strlen( str1 ) <= 10 ) {  strcpy( string, str1 ); }} if(strlen(str1) <= 10)应改为if(strlen(str1) < 10),因为strlen的结果未统计’\0’所占用的1个字节。 考查对基本功的掌握:  (1)字符串以’\0’结尾;  (2)对数组越界把握的敏感度;  (3)库函数strcpy的工作方式,如果编写一个标准strcpy函数的总分值为10,下面给出几个不同得分的答案:  2分void strcpy( char *strDest, char *strSrc ){  while( (*strDest++ = * strSrc++) != ‘\0’ );}  4分void strcpy( char *strDest, const char *strSrc ) //将源字符串加const,表明其为输入参数,加2分{  while( (*strDest++ = * strSrc++) != ‘\0’ );}  7分void strcpy(char *strDest, const char *strSrc) { //对源地址和目的地址加非0断言,加3分 assert( (strDest != NULL) && (strSrc != NULL) ); while( (*strDest++ = * strSrc++) != ‘\0’ );}  10分//为了实现链式操作,将目的地址返回,加3分!char * strcpy( char *strDest, const char *strSrc ) { assert( (strDest != NULL) && (strSrc != NULL) ); char *address = strDest;  while( (*strDest++ = * strSrc++) != ‘\0’ );   return address;}   (4)对strlen的掌握,它没有包括字符串末尾的'\0'。  一个10分的strlen函数了,完美的版本为: int strlen( const char *str ) //输入参数const{ assert( strt != NULL ); //断言字符串地址非0 int len; while( (*str++) != '\0' )  {   len++;  }  return len;}

阅读(2268) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册