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()函数没有返回值。

  • 相关阅读:
    附加:CSS大全
    HTML 三
    HTML 二
    HTML 一
    20150106--SQL事务操作+触发器二
    20150106--SQL事务操作+触发器一
    20141229 mysql基本操作二
    Oracle基础知识
    JDBC事务
    jsp内置/隐式对象(9个)与el表达式
  • 原文地址:https://www.cnblogs.com/jikexianfeng/p/7591179.html
Copyright © 2011-2022 走看看