C语言中模拟实现strcpy,strstr,strcat函数
2015-11-18 22:10
453 查看
在C中,要模拟实现这几个库函数,是对指针的传参与函数的调用的考察,代码如下,仅供参考
strcpy函数:
如有不足,希望指正。
strcpy函数:
#include <assert.h> char* my_strcpy(char* dest, const char* src) { assert(dest);//断言指针的有效性 assert(src); char*pa = dest; while (*dest++ = *src++) ; return pa; }strstr函数:
int my_strstr(const char*str1, const char*str2) { assert(str1); assert(str2); int i = 0; char*p1 = str1; char*p2 = str2; while (*p1 != '\0'&&*p2 != '\0') { if (*p1 == *p2) { p2++; p1++; } else { p2 = str2; p1 = str1 + i; i++; } } if (*p2 == '\0') { return 1; } else return 0; }strcat函数:
char* my_strcat(char*str1, const char*str2) { assert(str1); assert(str2); char*pa = str1; while (*pa) { pa++; } while (*pa++ = *str2++) ; return str1; }这里strcat函数不支持重叠拷贝,例如“1234567”这个字符串,如果要从第二位开始拷贝到第四位,从这个字符串第一位开始拷贝,编译器就会进行内存报错,使用时需要慎重。
如有不足,希望指正。
相关文章推荐
- 《C++ primer》英文第五版阅读笔记(十三)——表达式基本知识
- C++ Primer 学习笔记 ——语句
- C语言宏定义和宏函数
- c++ dirname() basename()
- c语言之康托展开
- C++ 学习 new
- 圈奶牛<计算几何><C++>
- C++语法疑点
- C++中const的使用
- 学习笔记4-C语言数组和字符串
- C++ 学习 (static, extern)
- 一个UUID生成算法的C语言实现——WIN32版本
- 反转字符串
- c语言中的size_t
- Visual Studio中设置默认VC++路径
- C++学习记录之函数返回值为指针的问题
- 邻接矩阵-C++
- TinyXML-2解析XML数据
- C++中声明与定义的区别
- 一般互联网公司通用的c++代码规范