str库函数模拟实现
来源:互联网 发布:上海地铁刷卡数据 编辑:程序博客网 时间:2024/05/21 10:49
常见str函数功能表:
strcat——将字符串str2连接到str1之后,并返回指针str1
strncat——将字符串from 中至多count个字符连接到字符串to中,追加空值结束符。返回处理完成的字符串
strchr——返回一个指向str 中ch 首次出现的位置,当没有在str 中找ch到返回NULL
strrchr——返回一个指针,它指向字符ch 在字符串str,末次出现的位置,如果匹配失败,返回NULL
strcoll——比较字符串str1 和 str2, 很象strcmp. 但是, strcoll使用在目前环境中由setlocale()设定的次序进行比较。
strcmp——比较两个字符串是否相等比较字符串str1 and str2,相等返回0,大于返回大于0的数,小于返回小于0的数
strncmp——比较字符串str1 和 str2中至多n个字符
strlen——返回字符串str 的长度( 即空值结束符之前字符数目)
strcpy——复制字符串from 中的字符到字符串to,包括空值结束符。返回值为指针to
strncpy——将字符串from 中至多count个字符复制到字符串to中,如果字符串from 的长度小于count,其余部分用'\0'填补。返回处理完成的字符串
strstr——返回一个指针,它指向字符串str2 首次出现于字符串str1中的位置,如果没有找到,返回NULL
strspn——返回字符串str1中第一个不包含于字符串str2的字符的索引
代码实现:
strcat
char* MyStrcat(char *src, const char*dst){assert(src && dst);int count = 0;char* ret = src;while (*src)//如果把++合并写到上面来会多加一次{src++;}while (*src++ = *dst++){;}return ret;}
strncat
char* MyStrncat(char* str1, const char* str2,size_t n){assert(str1 && str2);char* tem = str1;while (*str1){str1++;}while (n--){if (!(*str1++ = *str2++)){return tem;}*str1 = '\0';}return tem;}
strrchr
const char* MyStrchr(const char* str, char ch){assert(str);while (*str){if (*str == ch)return str; str++;}return NULL;}
strchr
const char* MyStrrchr(const char* str,char ch){assert(str);const char* tmp = str;while (*str++)//先让指针指向\0{;}while (--str != tmp)//只要str还没有减到tmp刚开始保存的初始位置{if (*str == ch)return str;}return NULL;}
strcoll
int MyStrcoll(const char* dst, const char* src){assert(dst && src);int ret = 0;while (!(ret = *dst-*src)){dst++;src++;}if (ret > 0)return 1;else if (ret < 0)return -1;elsereturn ret;}
stcpy
char* MyStrcpy(char* dst, const char* src)//src为原字符串,dst为目标字符串{assert(src && dst);char* ret = dst;//先让ret保存dst的起始位置while (*dst++ = *src++)//将src中的值一次拷贝到dst之中{;}return dst;}
strlen
size_t MyStrlen1(const char* str)//加const防止str被修改{assert(str);//断言,防止str为空指针或者野指针的情况size_t count = 0;while (*str++){++count;}return count;}size_t MyStrlen2(const char* str){assert(str);const char* eos = str;while (*eos++);return (eos - str - 1);}
strcmp
int MyStrcmp(const char* dst, const char* src){assert(dst && src);int ret = 0;while (!(ret = *dst - *src)){src++;dst++;}if (ret < 0)return -1;else if(ret > 0)return 1;return ret;}
strncmp
int MyStrncmp(const char* str1, const char* str2, size_t n){assert(str1 && str2);int ret = 0;while (!(ret = *str1 - *str2) && n--){++str1;++str2;}if (ret > 0){return 1;}else if (ret < 0){return -1;}return ret;}
strncpy
char* MyStrncpy(char* str1, const char* str2, size_t n){assert(str1 && str2);if (!n)return str1;char* tmp = str1;while (n && (*str1++ = *str2++)){n--;}if (n){while (n--){*str1--;}str1 = '\0';}return tmp;}
strstr
const char* MyStrstr(const char*str1, const char* str2){assert(str1 && str2);while (*str1){if (*str1++ == *str2++){;}++str1;return str1;}return NULL;}
strspn
size_t MyStrspn(const char* str1, const char* str2){size_t index = 0;while (*str1++ == *str2++){index++;}return index;}
- str库函数模拟实现
- int atoi(const char *str)库函数实现
- 模拟实现string库函数
- 模拟实现库函数Strcpy
- 模拟实现库函数strstr
- 模拟实现库函数atoi
- 模拟实现库函数strstr
- Mem库函数模拟实现
- 模拟实现库函数
- 模拟实现部分库函数
- 模拟实现库函数strcpy
- 模拟实现库函数strcpy
- 模拟实现库函数strlen
- 模拟实现库函数
- 模拟实现库函数---qsort
- 模拟实现str--以及mem--
- 模拟实现C语言库函数
- 又一波str函数的模拟实现
- java的选择结构switch和循环结构for while do while以及流程控制语句break continue return
- 1014. 福尔摩斯的约会 (20)
- SpringMVC
- 最长公共子序列(动态规划方法)和最长递增子序列(动态规划方法)
- 机器学习实践1:基于logistic regression的性别预测
- str库函数模拟实现
- 1015. 德才论 (25)
- Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal
- 异常:TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined
- 创建线程
- 【Linux】screen 常用命令
- 【Linux】ubuntu系统权限chmod的使用
- expire