常见字符串函数的模拟实现(二)(c语言)
2017-11-21 20:24
417 查看
模拟实现 :strncpy ,strncat ,strncmp ,strchr ,strrstr
1.strncpy函数的功能是拷贝一个字符串中的前n个字符到另一个字符串,以下是函数实现部分:
2.strncat函数是把src所指向的字符串的前count个字符链接到dest所指向的字符串,自动把dest所指向的字符串中的‘\0’去掉,并且在链接完成后在字符串末尾补上‘\0’。
以下是函数实现部分:
3.strncmp函数的功能是比较str1和str2所指向的字符串的前count个字符,若 str1 > str2,则返回一个大于0的 整数;若 str1 < str2则返回一个小于 0 的整数;若str1 = str2 则返回 0 。
以下是函数实现部分:
4.strchr函数的功能是在src 所指向的字符串中查找字符 ch,并返回字符ch第一次出现在 src所指向的位置。
以下是函数实现部分:
5.strrstr函数的功能是在dst所指向的字符串中查找src所指向的字符串,并返回src指向的字符串在dst中最后出现的位置。
以下是函数的实现部分:
1.strncpy函数的功能是拷贝一个字符串中的前n个字符到另一个字符串,以下是函数实现部分:
//拷贝src所指向的字符串的前count个字符到dest所指向的字符串 char* my_strncpy(char* dest, const char*src, size_t count) { int i = 0; char* temp = dest; assert(dest!=NULL&&src!=NULL); while (((i++)<count) && (*temp++ = *src++) != '\0') { ; } if (*(temp) != '\0') { *temp = '\0'; } return 0; }
2.strncat函数是把src所指向的字符串的前count个字符链接到dest所指向的字符串,自动把dest所指向的字符串中的‘\0’去掉,并且在链接完成后在字符串末尾补上‘\0’。
以下是函数实现部分:
char* my_strncat(char*dest, const char*src, size_t count) { assert(dest != NULL&&*src != NULL); char* temp = dest; while (*temp != '\0') { ++temp; } while (count != 0 && (*temp++ = *src++) != '\0') { --count; } return dest; }
3.strncmp函数的功能是比较str1和str2所指向的字符串的前count个字符,若 str1 > str2,则返回一个大于0的 整数;若 str1 < str2则返回一个小于 0 的整数;若str1 = str2 则返回 0 。
以下是函数实现部分:
#define false 'z'-'A' int my_strncmp(const char*str1, const char*str2, size_t count) { if (str1 == NULL || str2 == NULL || count < 0) { return false; } if (count == 0) { return 0; } while (count-- && (*str1 == *str2) && str2) { str1++; str2++; } return *(unsigned char*)str1 - *(unsigned char*)str2; }
4.strchr函数的功能是在src 所指向的字符串中查找字符 ch,并返回字符ch第一次出现在 src所指向的位置。
以下是函数实现部分:
char* my_strchr(const char* src, const char ch) { if (src == NULL) { return NULL; } const char*ptr = src; while (*ptr != '\0') { if (ch == *ptr) { return (char*)ptr; } ++ptr; } return NULL; }
5.strrstr函数的功能是在dst所指向的字符串中查找src所指向的字符串,并返回src指向的字符串在dst中最后出现的位置。
以下是函数的实现部分:
char *my_strrstr(const char *dst, const char *src) { assert(dst); assert(src); const char *pdst = dst; const char *psrc = src; char *right = NULL; while (*dst) { while (*pdst == *psrc) { if (*pdst == '\0')//如果*pdst为‘\0'则已经找到最后一个 return right = (char *)dst; else { pdst++; psrc++; } } if (*psrc == '\0') //找到一个,但不确定是不是最后一个 right = (char *)dst; pdst = ++dst; psrc = src; } return right; }
相关文章推荐
- 常见字符串函数的模拟实现(一)(c语言)
- 模拟实现C语言中的字符串函数
- C语言常见字符串函数实现
- C语言:字符串函数(strcpy,memcpy等)模拟实现
- [C语言]字符串函数的分析以及模拟实现
- C语言常见字符串函数实现
- 字符串函数模拟实现之strlen函数的三种常见实现方法
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- [C语言]模拟用注册表实现自启动
- 常见C语言字符串函数
- C语言中模拟实现strcpy,strstr,strcat函数
- 用Linux_C语言模拟CP命令,实现文件和文件夹的拷贝
- 几种常见内部排序算法分析与实现(C语言描述)
- C语言~模拟实现strncpy、strncat、strncmp函数
- C语言:模拟实现memmove函数,memove与memcpy之间的相同与区别
- 常见排序算法(冒泡,选择,快速)的C语言实现【修正版】
- C语言实现常见的矩阵运算函数
- 使用C语言模拟实现String函数
- 【c语言】模拟实现库函数的atof函数
- C语言模拟通讯录系统的简单实现