模拟实现strcpy,strcmp,等str~系列函数
2017-11-24 21:36
423 查看
//1.实现strcpy //2.实现strcat //3.实现strstr //4.实现strchr //5.实现strcmp //6.实现memcpy //7.实现memmove #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<assert.h> //1.实现strcpy char * My_strcpy(char *dst, const char *src) { assert(src); char *ret = dst; while (*dst++ = *src++) { ; } return ret; } //2.实现strcat char * My_strcat(char *dst, const char *src) { assert(dst); assert(src); char *ret = dst; while (*dst) { dst++; } while (*dst++ = *src++) { ; } return ret; } //3.实现strstr char * My_strstr(const char *dst, const char *src) { assert(src); assert(dst); char *search = (char *)dst; char *p = NULL; while (*search) { p = search; char *substr = (char*)src; while (*p&&*substr && (*p == *substr)) { p++; substr++; } if (*substr == '\0') { return search; } search++; } return NULL; } //4.实现strchr char * My_strchr(const char *dst, int ch) { assert(dst); assert(ch); char* search = (char*)dst; while (*search) { if (*search == ch) { return search; } search++; } return NULL; } //5.实现strcmp int My_strcmp(const char * src, const char * dst) { assert(src); assert(dst); int ret = 0; while ( !(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst) { src++; dst++; } if (ret < 0) { ret = -1; } else if (ret > 0) { ret = 1; } return ret; } //6.实现memcpy(不限制类型) void * My_memcpy(void * dst, const void * src, size_t num) { void * ret = dst; //从高地址开始拷贝 while (num--) { *(char*)dst = *(char *)src; //(char *)dst++, (char*)src++; dst = (char *)dst + 1; src = (char*)src + 1; } return ret; } //7.实现memmove void * My_memmove(void * dst, const void * src, size_t num) { void *ret = dst; if (dst<src || ((char *)dst>(char*)src + num)) { while (num--) { *(char*)dst = *(char *)src; dst = (char *)dst + 1; src = (char*)src + 1; } } else { dst = (char*)dst + num - 1; src = (char*)src + num - 1; while (num--) { *(char*)dst = *(char *)src; dst = (char *)dst + 1; src = (char*)src + 1; } } return ret; } int main() { char str1[] = "AB"; char str2[] = "EFGH"; char str3[] = "ABCDEFG"; char buffer[] = { 0 }; char *ret = NULL; char ch = 'E'; printf("str1 : %s str2 : %s str3 :%s ch : %c\n",str1,str2,str3,ch); printf("\n"); printf("将str1内存中内容拷贝到buffer中:\n"); My_strcpy(buffer, str1); printf("buffer:%s\n", buffer); printf("\n"); printf("将str1拼接到str2后面:\n"); My_strcat(str2, str1); printf("str2:%s\n", str2); printf("\n"); printf("在str3字符串中找是否含有子串str1,\n找到则输出第一次出现的位置,没找到则输出0\n"); ret=My_strstr(str3, str1); printf("结果为:%d\n", ret-str3+1); printf("\n"); printf("在str3字符串中找是否含有字符变量ch,\n找到则输出第一次出现的位置,没找到则输出0\n"); ret = My_strchr(str3, ch); printf("结果为:%d\n", ret-str3+1); printf("\n"); printf("将str3与str1比较,大于输出1,小于输出-1,等于输出0\n"); printf("结果为:%d\n", My_strcmp(str3, str1)); printf("\n"); printf("将str1全部字节拷贝到buffer中:\n"); int length = sizeof(str1); My_memcpy(buffer, str1,length); printf("buffer:%s\n", buffer); printf("\n"); printf("将str3从它自己在内存中第3个字节处开始覆盖:\n"); length = sizeof(str3+3-1); My_memmove(str3, str3+3-1, length); printf("str3:%s\n",str3); printf("\n"); fflush(stdin); getchar(); return 0; }
相关文章推荐
- mem系列函数(memset memcpy memmove) 和str系列函数(strlen strcpy strcmp strcat strstr strtok)
- 模拟实现 strcpy strcat strstr strcmp 函数
- 模拟实现函数库中的常用函数,1实现strcpy 2.实现strcat 3.实现strstr 4.实现strchr 5.实现strcmp 6.实现memcpy 7.实现memmove,8实现memset
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- 和字符串有关的函数的模拟实现 strlen strcpy strcat strstr strcmp
- 模拟实现c库函数strcpy,strcat,strstr,strcmp,memcpy,memmove
- 模拟实现C库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- 字符串逻辑比较函数---StrCmpLogicalW的模拟实现
- 模拟实现//strcpy //strncpy //strcat //strncat //strcmp //strncmp //memcpy //memmove
- 字符串处理函数strlen、strcpy、strcat、strcmp和convert的C语言实现
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- 模拟实现部分库函数(strcpy,strcmp,strcat,strstr,memcpy,memmove,memset)
- 【C语言】str类与men库函数的实现(如:strcpy,strcmp,strstr,strcat,memmove,memcpy)
- 自己实现字符串操作函数strlen(),strcat(),strcpy(),strcmp()
- [C语言]模拟实现strcpy/strncpy/strcat/strncat/strcmp/strncmp/strstr
- 模拟实现strcpy,strcmp,strstr,strncpy,strncmp,strcat,strlen函数
- strcat,strcmp,memcpy,strcpy等函数的实现
- strlen, strcpy, strcat, strcmp, memset... (字符串操作函数的实现)