我是靠谱客的博主 迷你樱桃,最近开发中收集的这篇文章主要介绍C语言学习笔记 (010) - 编写strcpy函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

很多公司的面试官在面试程序员的时候,要求应聘者写出库函数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("%sn", 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()函数没有返回值。

 

转载于:https://www.cnblogs.com/jikexianfeng/p/7591179.html

最后

以上就是迷你樱桃为你收集整理的C语言学习笔记 (010) - 编写strcpy函数的全部内容,希望文章能够帮你解决C语言学习笔记 (010) - 编写strcpy函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(87)

评论列表共有 0 条评论

立即
投稿
返回
顶部