zoukankan      html  css  js  c++  java
  • 一道字符串复制的面试题目

    很多技术笔试都考字符串复制函数的编写(不能用那个库函数),  
      有人说说这个函数的考点在哪里和编写的时候要注意的问题吗?  
      最好能有编写严谨的例程。  
      函数声明:  
      char   *   strcpy(char   *   strDest,   const   char   *   strSrc)  
      目前为止,我总结出:  
      1,考察strDest和strSrc非空  
      2,考察strDest和strSrc是否重叠  
      3,注意书写结构  
      4,函数健壮性  
      另外,我觉得如果strSrc缓冲区的数据长度如果超过了strDest缓冲区  
      的长度,就会产生溢出,但怎么检查strDest缓冲区的长度?  
      有谁还有补充?  

    strncpy()函数: 这个程序是真正的牛人Linus   Torvalds写的  
        
      char   *   strncpy(char   *   dest,const   char   *src,size_t   count)  
      {  
              char   *tmp   =   dest;  
       
              while   (count--   &&   (*dest++   =   *src++)   !=   '\0')  
                      /*   nothing   */;  
       
              return   tmp;  
      }  
       
      肯定会有人说:“不对呀,为什么不为目标字符串加上结束标志,变成这样:  
        while   (count--   &&   (*dest++   =   *src++)   !=   '\0')  
                      /*   nothing   */;  
          *dest   =   '\0';   ”  
       
      我说,作为strncpy函数,它只要把指定长度的字符copy给目标串就行了,而不需要自作多情,加上什么字符串结束标志,也许函数调用者根本就不想要这个结束标志,如果需要,他自己会加上的。  
       
      所以说,一个函数,只作自己该作的事,这就是简单性;而其他函数应该明白被调用函数可以作什么事,这就是一致性;Unix/Linux本身就是简单一致性原则的绝妙产品。

  • 相关阅读:
    iOS 代码让手机震动一下
    iOS开发 --制作圆形的头像(UIImage)
    JAVA基本数据类型和引用数据类型的区别
    jquery基础
    JS基础
    JAVA异常详解
    单例模式详解及java常用类
    JAVA基础之字符串和面向对象
    我的第一篇博客 初识动画,飞机行小动画
    GCD系列:调度组(dispatch_group)
  • 原文地址:https://www.cnblogs.com/buffer/p/1277648.html
Copyright © 2011-2022 走看看