动手写C库——strcmp()
来源:互联网 发布:下载软件管家12345 编辑:程序博客网 时间:2024/04/28 01:09
计划通过编写C语言常见的库函数练习C语言基本功。
每写一个函数都包括三个过程:
1. 通过Linux man命令查看库函数的描述,重点是入参和返回值;
2. 自己不参考任何内容实现库函数的功能;
3. 对比glibc里库函数的实现,做总结;
1. strcmp()形式如下: int strcmp(const char *s1, const char *s2)
2. 我的实现:
/*1. 从左往右依次比较每个字符,如果相等继续比较下一个字符,如果不等立刻返回 s1的字符减去s2的字符2. 以s1出现字符串结束符为循环退出条件*/int strcmp7(const char *s1, const char *s2){//需要判断字符串结束符,否则指针加加会越界while (*s1 != '\0'){if (*s1 == *s2){s1++;s2++;}else{return (*s1 - *s2);}}return (*s1 - *s2);}3. glibc的实现:
intSTRCMP (const char *p1, const char *p2){ const unsigned char *s1 = (const unsigned char *) p1; const unsigned char *s2 = (const unsigned char *) p2; unsigned char c1, c2; do { c1 = (unsigned char) *s1++; c2 = (unsigned char) *s2++; if (c1 == '\0')return c1 - c2; } while (c1 == c2); return c1 - c2;}
我认为两个函数只是循环退出的条件不同,其他地方没有实质性的区别。两个函数都做了初步测试,没发现问题。
0 0
- 动手写C库——strcmp()
- C/C++——strcmp函数实现
- C/C++——strcmp函数实现
- C语言——字符串指针-strcmp
- 自己写一个strcmp函数(C++)
- 自已动手写Android Widget续集 —— TopWidget
- 自已动手写ORM框架(1)——幼儿园
- 自已动手写ORM框架(2)——学前班
- 动手写代码——基于Spark的TextRank实现
- 内核代号101 — 动手写自己的内核
- 内核代号101 — 动手写自己的内核
- 内核代号101 — 动手写自己的内核
- 内核代号101 — 动手写自己的内核
- 动手敲代码——链表(C语言实现)
- strcmp.c
- C strcmp
- 学习较底层编程:动手写一个C语言编译器
- 学习较底层编程:动手写一个C语言编译器
- My First RPG Game总结二
- iOS发送http请求
- C# GridView帮助类
- java中重载与重写的区别
- (GIS可视化)加权叠加原理及应用
- 动手写C库——strcmp()
- 软件下载网址
- mac配置Scala环境变量
- JavaScript中的this陷阱的最全收集
- Glide学习笔记
- spark RDD算子(四)之创建键值对RDD mapToPair flatMapToPair
- javascript之onresize事件
- ag
- java的运行时多态