常见字符串函数的模拟实现(一)(c语言)
来源:互联网 发布:xvna网络社区 编辑:程序博客网 时间:2024/04/28 07:01
1.三种方式模拟实现strlen函数
2.模拟实现strcpy
3.模拟实现strcat
4.模拟实现strcmp
5.模拟实现strstr
6.模拟实现memcpy
7.模拟实现memmove
//模拟实现strlen(求字符串长度)// 1>指针int my_strlen(char const*s){ char*p = s; while (*p != 0) { p++; } return p - s;}int my_strlen(char s[]){ int len = 0; while (*s++ != 0) { len++; } return len;}// 2>函数递归int my_strlen(char*s){ if (*s == '\0') return 0; else return 1 + my_strlen(s + 1);}// 3>计数int my_strlen(char s[]){ int i = 0; int count = 0; while (s[i++] != '\0') count++; return count;}
//模拟实现strcpy (拷贝字符串)char* my_strcpy(char*dest, char const*src){ char* ret = dest; assert(src!=NULL); assert(dest != NULL); while (*src) { *dest++ = *src++; } *dest = '\0'; return ret;}
//模拟实现strcat(字符串链接)char* my_strcat(char*dest, const char* src){ char* ret = dest; assert(*dest != 'NULL'); assert(*src != 'NULL'); while (*dest != '\0') dest++; while (*dest++ = *src++)//将src链接到dest上 { ; } return ret;}
//模拟实现strcmp(字符串比较)int my_strcmp(const char*src1, const char*src2){ //判断两个源字符串都不为空 assert(*src1 != '\0'); assert(*src2 != '\0'); while (!(*src1 - *src2) && src2) { *src1++; *src2++; } return*src1 - *src2;}
//模拟实现strstr(查找子串)char* my_strstr(const char*src, const char*sub){ assert(src); assert(sub); char*p = src; char*s1 = p; char*s2 = sub; while (*s1) { s1 = p; s2 = sub; while ((*s1 != '\0') && (*s2 != '\0')) { if (*s1++ == *s2++) { ; } else { p++; break; } if (*s2 == '\0') { return p; } } }}
//模拟实现memcpy(不考虑内存重叠时的内存拷贝)void my_memcpy(void*dest, const void*src, int count){ char *psrc, *pdest; psrc = (char *)src; pdest = (char *)dest; while (count--) { *pdest++ = *psrc++; }}
//模拟实现memmove(复制内存)void* my_memmove(void*dest, const void*src, int count){ char*psrc; char*pdest; if ((NULL ==dest) || (NULL == src)) { return NULL; } if ((src<dest) && (char*)src + count>(char*)dest) { psrc = (char*)src + count - 1; pdest = (char*)dest + count - 1; while (count--) { *pdest-- = *psrc--; } } else { psrc = (char*)src; pdest = (char*)dest; while (count--) { *pdest++ = *psrc++; } } return dest;}
以上代码均已运行测试过,如有错误,忘指出。
阅读全文
0 0
- 常见字符串函数的模拟实现(一)(c语言)
- 常见字符串函数的模拟实现(二)(c语言)
- 模拟实现C语言中的字符串函数
- C语言模拟实现字符串操作函数
- C语言实现常见的字符串处理函数
- C语言常见字符串函数实现
- C语言常见字符串函数实现
- 【C语言】C语言字符串函数实现(一)
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- C语言常见的字符串处理函数
- c语言常见的字符串处理函数
- C语言常用字符串函数的实现一
- 常见的字符串操作(C语言实现)
- 字符串处理函数C语言实现(一)
- 常见C语言字符串函数
- C语言字符串函数总结(部分常见字符串函数)
- String函数的模拟实现(c语言)
- C语言:模拟实现字符串中查找一个字符串my_strstr()函数
- ubuntu16.04中安装为知笔记
- 11月15日云栖精选夜读:分布式服务框架Dubbo疯狂更新!阿里开源要搞大事情?
- git命令
- [译][VLC] Android直播RTMP RTSP HLS(m3u8) MMS
- 使用maven打包zxing
- 常见字符串函数的模拟实现(一)(c语言)
- Java异常处理(I)
- Java并发编程实践
- BadRequest 400
- android调用webservice实现图片上传
- Python concurrency & parallelism
- 简单的jQuery.jqprint插件实现打印HTML页面,页面导出为PDF文件
- C++引用数组
- SimpleHTTPServer中出错信息:SocketServer doesn't handle client disconnects properly