模拟实现strcpy,strcmp,strcat,strstr.strlen
2017-08-06 20:55
381 查看
strcpy函数实现
strcpy :字符串拷贝函数, 函数原型 char* strcpy(char* dest,char* src) 从stc的起始地址开始,到'\0'结束。 所以dest必须有足够的空间来容纳src。头文件#include<string.h>
char* my_strcpy(char* dest, const char* src) { assert(dest); assert(src); char* ret = dest; while ((*dest++) = (*src++)) { ; } return ret; }测试部分
int main() { char arr[20]; char* str= "hello "; char* ret = my_strcpy(arr, str); printf("%s\n", ret); system("pause"); return 0; }
strcat函数实现
strcat :字符串连接函数 ,把src指向的字符串添加到dest后,(src直接覆盖dest结尾处的‘\0’) 原型 char* strcat(char *dest,const char* src); 头文件#include<string>注意事项: dest和src俩块空间不能有重叠部分,dest必须有足够大的空间来容纳srt,返回dest的指针
char* my_strcat(char* dest, const char* src) { char* ret = dest; assert(dest); assert(src); while (*dest) { *dest++; } while (*dest++ = *src++) { ; } return ret; }
测试部分
int main() { char arr1[20] = "hello"; char arr2[] = "sust"; char* ret = my_strcat(arr1, arr2); printf("%s\n", ret); system("pause"); return 0; }arr1 的空间一定要足够大
strcmp函数实现
strcmp:字符串比较函数,俩个字符串自左向右逐个字符比较(按ASCIIZ值的大小比较)直到出现不同的字符或者‘\0’。若这俩个字符串为str1,str2,若str1==str2,返回0;
若str1>str2 ,返回正数;
若str1<str2,返回负数;
int my_strcmp(const char* dest,const char* src) { int ret = 0; while (*dest == *src) { if (*dest == '\0') { return 0; } *dest++; *src++; } return *dest - *src; }
测试
int main() { char arr1[10] = "sust"; char arr2[10] = "sust"; int ret = my_strcmp(arr1, arr2); printf("%d\n", ret); system("pause"); return 0; }
strstr函数实现
strstr:在字符串中找子串 char* strstr(char* str1,char * str2) 在str1中找str2,如果找到了返回strp2在str1中首次出现的地址,如果没找到返回NULL。char* my_strstr(const char* str1, const char* str2) { char *cp = (char*)str1; char *substr = (char*)str2; char *s1 = str1; assert(str1); assert(str2); if (*str2 == '\0') return NULL; while (*cp) { s1 = cp; substr = str2; while (*s1&&*substr && (*s1 == *substr)) { s1++; substr++; } if (*substr == '\0') return cp; cp++; } }
strlen函数实现
strlen:求字符串长度函数,从开始直到遇到'\0'结束,返回计数器的值不包含‘\0’;法一:
int my_strlen(const char *str) { int count = 0; while (*str) { count++; str++; } return count; }
法二:递归法
int my_strlen(const char *str) { if (*str=='\0') return 0; else return 1 + my_strlen(str + 1); }
测试
int main() { char arr[10] = "hello"; int ret = my_strlen(arr); printf("%d\n", ret); system("pause"); return 0; }
相关文章推荐
- 模拟实现strlen,strcpy,strcat,strstr,strcmp,memcpy,memmove
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- strlen,strcpy,strcat,strcmp,strstr,memcpy,的模拟实现方式
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- 和字符串有关的函数的模拟实现 strlen strcpy strcat strstr strcmp
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- 模拟实现部分库函数(strcpy,strcmp,strcat,strstr,memcpy,memmove,memset)
- strcpy strlen memcpy strcat strcmp strstr strrev函数的实现代码
- 模拟实现strcpy,strcat,strcmp,strstr
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- C语言模拟实现strcpy、strncpy、strcmp、strcat、strstr
- 模拟实现c库函数strcpy,strcat,strstr,strcmp,memcpy,memmove
- strcpy,strcmp,strstr,strcat,memcpy,memmove,memset的模拟实现
- 模拟实现strlen,strcpy,strcmp,strcat,strstr库函数
- 模拟实现 strcpy strcat strstr strcmp 函数