字符串函数模拟实现(strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove)
来源:互联网 发布:网页服务器软件 编辑:程序博客网 时间:2024/06/05 09:34
1.实现strcpy
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<assert.h>char *my_strcpy(char *str1, const char *str2){ assert(str1); assert(str2); while ((*str1++) = (*str2++)) ; return str1;}int main(){ char str1[20] = "123456"; char *str2 = "abcde"; my_strcpy(str1, str2); printf("%s\n", str1); return 0;}
运行结果:
2.实现strcat
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<assert.h>void *my_strcat(char *str1, const char *str2){ assert(str1); assert(str2); char *dest = str1; while (*++dest); while (*dest++ = *str2++); return str1;}int main(){ char str1[20] = "123456"; char *str2 = "abcdef"; my_strcat(str1, str2); printf("%s\n", str1); return 0;}
运行结果:
3.实现strstr
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<assert.h>#include<string.h>char *my_strstr( char *str, char *substr){ assert(str); assert(substr); char *start = str; char *end = str + strlen(str) - strlen(substr) + 1; while (start < end) { char *str_start = start; char *sub_start = substr; while (*sub_start) { if (*str_start == *sub_start) { str_start++, sub_start++; } else { break; } } if (*sub_start == '\0') { return start; } start++; } return NULL;}int main(){ char dest[20] = "abcdefg123456"; char *ret = my_strstr(dest, "defg"); printf("%s\n", ret); return 0;}
运行结果:
没有找到返回null
4.实现strchr
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<assert.h>char *my_strchr(char *des, char ch){ assert(des); assert(ch); while (*des) { if (*des == ch) { return des; } des++; } return NULL;}int main(){ char des[20] = "abcdef"; char *ret=my_strchr(des, 'd'); printf("%s\n", ret); return 0;}
运行结果:
没有找到返回null
5.实现strcmp
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<assert.h>int my_strcmp(const char *msg1, const char *msg2){ assert(msg1); assert(msg2); const char *p = msg1; const char *q = msg2; 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 *msg1 = "abcdef"; const char *msg2 = "abcdeg"; int ret = my_strcmp(msg1, msg2); printf("ret = %d\n", ret); return 0;}
运行结果:
6.实现memcpy
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<assert.h>void *my_memcpy(void *dst, const void* src, int count){ assert(dst); assert(src); char *dst_p = (char *)dst; const char *src_p = (const char*)src; while (count--) { *dst_p = *src_p; dst_p++; src_p++; } return dst;}int main(){ int a[] = { 1, 2, 3, 4 }; int b[4]; my_memcpy(b, a, sizeof(a)); for (int i = 0; i < 4; i++) printf("%d ", b[i]); printf("\n"); return 0;}
运行结果:
7.实现memmove
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string.h>#include<assert.h>void *my_memmove(void *dst, const void *src,int count){ assert(dst); assert(src); char *p = (char *)dst; const char *q = (const char *)src; if ((p > q) && (p < q + count)) { p = p + count - 1; q = q + count - 1; while (count--) { *p = *q; p--, q--; } } else { while (count--) { *p = *q; p++, q++; } }return dst;}int main(){ char arr[20] = "abcdefghijklmn"; my_memmove(arr+1, arr , strlen(arr)); printf("%s\n", arr); return 0;}
运行结果:
阅读全文
0 0
- 字符串函数模拟实现(strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove)
- 模拟实现strcpy、strcat、strstr、strchr、strcmp、memcpy、memmove
- 模拟库函数(strcpy,strcat,strchr,strstr,strcmp,memcpy,memmove)
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- 模拟实现C库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove
- 模拟实现C语言库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- 模拟实现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
- 模拟实现函数库中的各种常用函数,1实现strcpy 2.实现strcat 3.实现strstr 4.实现strchr 5.实现strcmp 6.实现memcpy 7.实现memmove
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- 模拟实现strlen/strcpy/strcat/strcmp/strstr/strchr/函数
- strlen函数 strcpy函数 strcmp函数 strstr函数 strcat函数 memcpy函数 memmove函数 以及字符串反转函数的实现
- 模拟实现C库函数:strchr、strcmp、strstr、memcpy和memmove
- 模拟实现 strcpy strcat strstr strcmp 函数
- HTML+CSS基础课程学习(3)
- IntelliJ-IDEA和Git、GitHub、Gitlab的使用
- PHP底层未完待续
- Nginx URL重写(rewrite)配置及信息详解
- ajax传递多个参数的两种方法和label标签中获取值
- 字符串函数模拟实现(strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove)
- POJ 3083
- 汇编第九节-转移指令的原理
- TOAD与Oracle DB 12c
- C#中数据类型
- OSG3.4.0+QT5.8.0+VS2013+WIN10 64BIT
- 生成器&迭代器
- MyBatis起步
- Android——systrace使用分析