模拟实现库函数
来源:互联网 发布:开战传奇网站源码 编辑:程序博客网 时间:2024/06/05 18:31
1.strcpy()
功能:用源字符串替换目标字符串
#include <stdio.h>#include <assert.h>char* my_strcpy(char *dst,const char *src){assert(dst);assert(src);while(*dst++=*src++){;}return dst; }int main(){char arr1[] = "abcdef";char arr2[] = "hello";my_strcpy(arr1,arr2);printf("%s\n",arr1);return 0;}
2.strcat()
功能:将源字符串复制到目标字符串,从目标字符串的'\0'开始复制。
#include <stdio.h>#include <assert.h>char* my_strcat(char *dst,const char *src){assert(dst);assert(src);while(*dst){dst++;}while(*dst++ = *src++){;}return dst; }int main(){char arr1[20] = "abcdef";char arr2[] = "hello";my_strcat(arr1,arr2);printf("%s\n",arr1);return 0;}
3.strstr()功能:在目标字符串中找源字符串,如果存在返回目标字符串的起始位置,如果不存在返回空指针。
#include <stdio.h>#include <assert.h>char* my_strstr(const char *dst,const char *src){const char *cur = dst;assert(cur);assert(src);while(*cur){const char *s1 = cur;const char *s2 = src;while((*s1)&&(*s2)&&*s1==*s2){s1++;s2++;}if(!*s2)return (char *)cur;cur++;}return NULL; }int main(){char arr1[20] = "abcdefghi";char arr2[] = "fgh";char *ret = my_strstr(arr1,arr2);printf("%s\n",ret);return 0;}
4.strchr()
功能:在目标字符串中找源字符,如果存在返回目标字符串的起始位置,如果不存在返回空指针。
#include <stdio.h>#include <assert.h>char* my_strstr(const char *dst,int ch){assert(dst);while(*dst){ if(*dst==ch) { return (char*)dst; } dst++; }return NULL; }int main(){char arr1[20] = "abcdefghi";char ch = 'a';char *ret = my_strstr(arr1,ch);printf("%s\n",ret);return 0;}
注意以上的函数返回值和参数列表,返回值char*方便链式访问,返回值为int的,方便调用处使用,参数列表中的限定,体现程序设计中的严谨5.strcmp()
功能:进行两个字符串的比较,如果第一个字符串和第二个字符串大于关系,返回1,小于关系,返回-1,等于关系返回0。
#include <stdio.h>#include <assert.h>int my_strcmp(const char *str1,const char *str2){assert(str1);assert(str2);while(*str1==*str2){if((*str1=='\0')&&(*str2=='\0'))return 0;str1++;str2++;}if(*str1>*str2)return 1;elsereturn -1;return NULL; }int main(){char arr1[] = "abcd";char arr2[] = "abc";int ret = my_strcmp(arr1,arr2);printf("%d\n",ret);return 0;}
6.memcpy()
功能:给目标字符串复制指定个字节大小的源字符串
#include <stdio.h>#include <assert.h>void* my_memcpy(void *dest,const void *src,int count){//强制转换成字符,copy一定是一个字节一个字节的完成char * pdest = dest;const char * psrc = src;assert(pdest);assert(src);//仍热可以做相应次数的运算while(count--){*pdest++ = *psrc++;}return dest;}int main(){int arr1[] = {1,2,3,4,5};int arr2[] = {6,7,8,9,0};int sz = sizeof(arr2[0]);my_memcpy(arr1,arr2,sz);return 0;}
7.strncpy()
功能:给目标字符串复制指定个数的源字符串
char* my_strncpy(char *dest, const char *sour, size_t count ){char *p = dest;assert(dest);assert(sour); while(count--){ *p++ = *sour++;}return dest;}
7.strncat()
功能:给目标字符串‘\0’后复制指定个数的源字符串
char* my_strncat(char *dest, const char *sour, size_t count ){char *p = dest;assert(dest);assert(sour);while(*p!='\0'){p++;}while(count--){*p++=*sour++;}return dest;}
8.strncmp()
功能:两个字符串指定个数比大小
int my_strncmp(const char*str1, const char*str2, size_t n) { assert(str1); assert(str2); while (n--) { if (*str1 == *str2) { str1++; str2++; } else { if ((*str1-*str2)<0) return -1; else return 1; } } return 0; }
阅读全文
0 0
- 模拟实现string库函数
- 模拟实现库函数Strcpy
- 模拟实现库函数strstr
- 模拟实现库函数atoi
- 模拟实现库函数strstr
- str库函数模拟实现
- Mem库函数模拟实现
- 模拟实现库函数
- 模拟实现部分库函数
- 模拟实现库函数strcpy
- 模拟实现库函数strcpy
- 模拟实现库函数strlen
- 模拟实现库函数
- 模拟实现库函数---qsort
- 模拟实现C语言库函数
- 【C语言】模拟实现库函数srtcpy函数
- 【C语言】模拟实现库函数strcat函数
- 【c语言】模拟实现库函数strcpy函数
- 代理模式
- C语言typedef:给类型起一个别名
- 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
- TJU1188Tian Ji -- The Horse Racing田忌赛马
- 验证码之字符分割&GUI显示
- 模拟实现库函数
- PAT-A-1079. Total Sales of Supply Chain (25)
- ztree刷新后依然保持之前的选中节点状态
- 你一定不知道的JavaScript等号运算符( `==和===` )
- Robot Framework自动化测试-定位动态元素
- LeetCode 121. Best Time to Buy and Sell Stock
- MySQL5.6 首次使用更新密码
- java字符串常量池
- Javascript做的贪食蛇