模拟实现strlen,strcpy,strcat,strcmp,strstr,memcpy,memmove
来源:互联网 发布:掌上电脑写卡软件 编辑:程序博客网 时间:2024/05/16 11:48
1.三种方式模拟实现strlen函数。
2.模拟实现strcpy
3.模拟实现strcat
4.模拟实现strcmp
5.模拟实现strstr
6.模拟实现memcpy
7.模拟实现memmove
#include<stdio.h>#include<assert.h> //1.三种方式模拟实现strlen函数。void my_strlen1(char* p){ int count = 0; while (*p != '\0') { count++; p++; } printf("%d\n", count);}void my_strlen2(char* p){ char* tmp = p; while (*p != '\0') { p++; } printf("%d\n", p - tmp);}int my_strlen3(char* p){ if (*p == '\0') { return 0; } else { return my_strlen3(++p) + 1; }} //2.模拟实现strcpychar* my_strcpy(char* dest, const char* src){ assert(dest); assert(src); char* ret = dest; while (*dest++ = *src++); return ret;} //3.模拟实现strcatchar* my_strcat(char* dest, const char* src){ assert(dest); assert(src); char* ret = dest; while (*dest) { dest++; } while (*dest++ = *src++); return ret;} //4.模拟实现strcmpchar* my_strcmp(const char* dest, const char* src){ assert(dest); assert(src); while (*dest == *src) { if (*dest == '\0' || *src == '\0') { return 0; } dest++; src++; } return dest - src;} //5.模拟实现strstrchar*my_strstr(const char* str1, const char* str2){ assert(str1); assert(str2); char* start = str1; char* substart = str2; char* cur = str1; while (*cur) { start = cur; substart = str2; while (*start && *substart && (*start == *substart)) { start++; substart++; } if (*substart == '\0') { return cur; } cur++; } return NULL;} //6.模拟实现memcpyvoid *my_memcpy(void *dest, const void *src, size_t count){ void *ret = dest; while (count--) { *(char *)dest = *(char *)src; dest = (char *)dest + 1; src = (char *)src + 1; } return ret;} //7.模拟实现memmovevoid *my_memmove(void *dest, const void *src, size_t count){ void *ret = dest; if (dest < src) { while (count--) { *(char *)dest = *(char *)src; dest = (char *)dest + 1; src = (char *)src + 1; } } else { while (count--) { *((char*)dest + count) = *((char*)src + count); } } return ret;}int main(){ char p[] = "abcde"; char q[10]; char p1[20] = "hello "; char p2[] = "word"; char p3[] = "abbbcdf"; char p4[] = "bcd"; char p5[] = "bcr"; void *dest[] = { 1, 2, 3, 4, 5, 6 }; void *str[] = { 7, 8, 9 }; my_strlen1(p); my_strlen2(p); printf("%d\n", my_strlen3(p)); printf("%s\n", my_strcpy(q, p)); printf("%s\n", my_strcat(p1, p2)); printf("%d\n", my_strcmp(p1, p2)); printf("%d\n", my_strcmp(p1, p1)); printf("%d\n", my_strcmp(p2, p1)); printf("%s\n", my_strstr(p3, p4)); printf("%s\n", my_memcpy(p2, p1, 3)); printf("%s\n", my_memmove(p4, p5, 2)); return 0;}
阅读全文
0 0
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- 模拟实现strlen,strcpy,strcat,strcmp,strstr,memcpy,memmove
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- strcpy,strcmp,strstr,strcat,memcpy,memmove的模拟实现
- 模拟实现strcpy ,strstr,strcat,strcmp,memcpy,memmove
- 模拟实现strcpy、strcat、strstr、strchr、strcmp、memcpy、memmove
- strlen,strcpy,strcat,strcmp,strstr,memcpy,的模拟实现方式
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- 模拟实现strcpy,strcmp,strcat,strstr.strlen
- 模拟库函数(strcpy,strcat,strchr,strstr,strcmp,memcpy,memmove)
- 模拟实现C库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove
- 字符串函数模拟实现(strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove)
- 模拟实现C语言库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove
- 自己实现memcpy/strcpy/strcmp/strcat/strlen/strstr
- 模拟实现strcpy,strncpy,strcat,strncat,strcmp,strncmp,memcpy,memmove
- strlen函数 strcpy函数 strcmp函数 strstr函数 strcat函数 memcpy函数 memmove函数 以及字符串反转函数的实现
- typedef的用法好处及与#define的区别
- 机器学习实战_k近邻算法源码详解
- 利用Python,获取Excel某列中(该列中每个单元格既有中文又有数字)的数字!!!!
- 剑指offer每日一刷-2017年11月15日
- 创建登陆界面
- 模拟实现strlen,strcpy,strcat,strcmp,strstr,memcpy,memmove
- GreenDao简单使用
- pycharm修改pip源为清华源-提高下载速度
- git 分支切换和 提交代码到远程分支 撤销add reset 撤销修改
- 火车票购票系统模拟
- 文件的存取
- 通过注解的方式向DAO中注入Sessionfactory
- 关于js原型连的思考
- hihocoder offer收割第一场