zoukankan      html  css  js  c++  java
  • C语言学习笔记 (010)

    很多公司的面试官在面试程序员的时候,要求应聘者写出库函数strcpy()的工作方式或者叫实现,很多人以为这个题目很简单,实则不然,别看这么一个小小的函数,它可以从三个方面来考查:

    (1)编程风格

    (2)出错处理

    (3)算法复杂度分析(用于提高性能)

    最好的写法如下:

    代码如下:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <assert.h>
     4   
     5 //链式访问
     6 char * my_strcpy(char *dest, const char *src)
     7 {//将源字符串加const,表明其为输入参数,起到相应的保护作用
     8    assert(src != NULL&&dest != NULL);//对源地址和目的地址加非0断言
     9    char *ret = dest;
    10    while ((*dest++ = *src++))
    11           ;
    12     return ret;//引用返回地址,方便链式操作!!
    13 }
    14  
    15 int main()
    16 {
    17     char *p = "bit-tech";
    18     char arr[20];
    19     //strcpy(arr,p);
    20     printf("%s
    ", my_strcpy(arr, p));
    21     system("pause");
    22     return 0;
    23 }

    同样写出strlen函数:

     1 int strlen( const char *str ) //输入参数const
     2  
     3 {
     4  assert( strt != NULL ); //断言字符串地址非0
     5  int len;
     6  while( (*str++) != '' )
     7  {
     8   len++;
     9  }
    10  return len;
    11 }

    上面是一篇博客上的两种写法:但都用到了一个人函数

      assert函数用于判断可能出的错误是否发生,如果发生程序终止执行;不发生着正常执行。函数在有可能出错的地方测试一个条件。当条件成立时,表示发生错误。

      语法:void asscrt(int test);

      asserr()函数的语法参数说明如下:

        参数test为测试表达式。

        asserr()函数没有返回值。

  • 相关阅读:
    洛谷 1850 NOIP2016提高组 换教室
    2018牛客多校第三场 C.Shuffle Cards
    2018牛客多校第一场 B.Symmetric Matrix
    2018牛客多校第一场 A.Monotonic Matrix
    2018牛客多校第一场 D.Two Graphs
    2018宁夏邀请赛L Continuous Intervals
    2018宁夏邀请赛K Vertex Covers
    BZOJ
    HDU
    ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (ECPC 2015)
  • 原文地址:https://www.cnblogs.com/jikexianfeng/p/7591179.html
Copyright © 2011-2022 走看看