我面试时要求写 strcpy函数,不准用c模板库

解决方案 »

  1.   

    跟我一样呢
    我也遇到这个题来的
    太简单了
    还有个文件读写void myStrCpy(LPSTR lpszSource,LPSTR lpszDst)
    {
      while(*lpszSource!='\0')
        {
           *lpszDst=*lpszSource;
           lpszDst++;
           lpszSource++; 
        }  
    }
      

  2.   

    最好去看下《高质量C++C 编程指南》,我的下载里有,刚出学校的话看下收获很大的哦。
    已知 strcpy 函数的原型是 
      char *strcpy(char *strDest, const char *strSrc); 
      其中 strDest 是目的字符串,strSrc 是源字符串。 
    (1)不调用 C++/C 的字符串库函数,请编写函数 strcpy 
    char *strcpy(char *strDest, const char *strSrc); 

        assert((strDest!=NULL) && (strSrc !=NULL));  // 2分 
        char *address = strDest;        // 2分 
        while( (*strDest++ = * strSrc++) != ‘\0’ )    // 2分 
           NULL ;  
        return address ;          // 2分 

     
    (2)strcpy 能把 strSrc 的内容复制到 strDest,为什么还要 char *  类型的返回值? 
    答:为了实现链式表达式。        // 2 分 
    例如  int length = strlen( strcpy( strDest, “hello world”) ); 
      

  3.   


    我也遇到过 如何用程序判断1个数是否刚好是2的n次方这个题,要求一步完成,我想丫的这种题有啥好搞的, 直接 (1<<n) == X呗。后面到网上一看
    if ((num & (num - 1)) == 0)
     {
    return true;
    }
     else 
    {
    return false;
     }你出题就说判断一个数是2的乘方呗,搞个N次方,这个N算啥啊,参数?呵呵,不知有没有人像我这么理解的。
      

  4.   

    (1)不调用 C++/C 的字符串库函数,请编写函数 strcpy  
    char *strcpy(char *strDest, const char *strSrc);  
    {  
      assert((strDest!=NULL) && (strSrc !=NULL)); // 2分  
      char *address = strDest; // 2分  
      while( (*strDest++ = * strSrc++) != ‘\0’ ) // 2分  
      NULL ;   
      return address ; // 2分  
    }  
     
    (2)strcpy 能把 strSrc 的内容复制到 strDest,为什么还要 char * 类型的返回值?  
    答:为了实现链式表达式。 // 2 分  
    例如 int length = strlen( strcpy( strDest, “hello world”) ); 
    高质量,内存和效率怎么算?