模拟实现strcpy ,strstr,strcat,strcmp,memcpy,memmove
来源:互联网 发布:海森伯格矩阵图片 编辑:程序博客网 时间:2024/05/16 15:34
模拟实现strcpy(strcpy将’\0’也拷贝进去,strncpy则不拷贝)
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <windows.h>#include <assert.h>#include <string.h>char *my_strcpy(char *dest, const char *src){ char *cp = dest; assert(dest); assert(src); while (*dest++ = *src++)//依次复制 { ; } return cp;}int main(){ char a[10] = { 0 }; char *p = "abcdef"; char *ret=my_strcpy(a, p); printf("%s\n", ret); system("pause"); return 0;}
模拟实现strcat
char *my_strcat(char *dest, const char *src){ char *cat = dest;//保留返回值位置 assert(dest); assert(src); while (*dest != '\0') { dest++; } while (*dest++ = *src++) { ; } return cat;}int main(){ char a[12] = "abcdef"; char *p = "123456"; char *ret=my_strcat(a, p); printf("%s\n", ret); system("pause"); return 0;}
模拟实现strstr
找子串,若是,则返回目标串在子串中的位置没有则返回空指针char *my_strstr(const char *str, const char *substr){ assert(str); assert(substr); char *end = str + strlen(str) - strlen(substr) + 1; char *start = str; while (start < end) { char *substart = substr;//子串开始 char *strstart = start; while (*substart) { if (*substart == *strstart)//指向位置相同 { substart++, strstart++; } else { break; } } if (*substart == '\0')//找到 { return start; } start++; }}int main(){ const char *p = "hello worldhello world"; char *ret = my_strstr(p,"orld"); printf("sub begin:%s\n", ret); system("pause"); return 0;}
模拟实现strcmp
int my_strcmp(const char *str1, const char *str2){ assert(str1); assert(str2); const char *p = str1; const char *q = str2; while (*p != '\0' && *q != '\0') { if (*p == *q) { p++, q++; } else if (*p > *q) { return 1; } else { return -1; } } if (*p != '\0') { return 1; } if (*q != '\0') { return -1; } return 0;}int main(){ const char *str1 = "abcdef"; const char *str2 = "bbcdef"; int ret = my_strcmp(str1, str2); printf("ret=%d\n", ret); system("pause"); return 0;}
模拟实现memcpy
按字节拷贝,可拷贝任意类型void *my_memcpy(void *dest, const void *src, int count){ assert(dest); assert(src); char *dest_p = ( char *)dest; const char *src_p = (const char *)src; while (count--) { *dest_p = *src_p; dest_p++; src_p++; } return dest;}int main(){ int a[] = {1,2,3,4}; int b[4]; system("pause"); return 0;}
模拟实现 memmove
void *my_memmove(void *dst, const void *src, int count){ assert(dst); assert(src); const char *p = (const char *)src; char *q = ( char *)dst; if ((char*)src<(char *)dst && (char *)src + count>(char *)dst)//从右往左 { p = p + count - 1; q = q + count - 1; while (count--) { *q = *p; q--; p--; } } else { while (count--) { *q = *p; q++; p++; } } return dst;}int main(){ char str[64] = "abcdefghij"; my_memmove(str+1, str, strlen(str)); printf("%s\n",str); system("pause"); return 0;}
阅读全文
0 0
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- strcpy,strcmp,strstr,strcat,memcpy,memmove的模拟实现
- 模拟实现strlen,strcpy,strcat,strcmp,strstr,memcpy,memmove
- 模拟实现strcpy ,strstr,strcat,strcmp,memcpy,memmove
- 模拟实现strcpy、strcat、strstr、strchr、strcmp、memcpy、memmove
- 模拟库函数(strcpy,strcat,strchr,strstr,strcmp,memcpy,memmove)
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- 模拟实现C库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove
- 字符串函数模拟实现(strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove)
- 模拟实现C语言库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove
- 模拟实现strcpy,strncpy,strcat,strncat,strcmp,strncmp,memcpy,memmove
- strlen,strcpy,strcat,strcmp,strstr,memcpy,的模拟实现方式
- strcpy,strcat,strstr,strcmp,memmove的实现
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- 【C语言】str类与men库函数的实现(如:strcpy,strcmp,strstr,strcat,memmove,memcpy)
- 模拟实现strcmp、strstr、memcpy、memmove
- spring 自定义注解
- python小练习(一)
- JSTL
- 点评cat-client解析
- Git rebase 和git merge 使用技巧20171119
- 模拟实现strcpy ,strstr,strcat,strcmp,memcpy,memmove
- Netty学习笔记(二) Channel和ChannelFuture
- SpringBoot事务管理
- JavaShowAlgorithm-使用2个栈实现队列
- Java并发编程札记-(一)基础-05线程安全问题
- 中介者模式
- 安卓VectorDrawable矢量图在原图基础上添加点击时 ripple 水波纹特效
- random随机数
- Eclipse插件springsource-tool-suite的下载和安装