C/C++ 对常见字符串库函数的实现(2)

strcmp
函数原型:int _strcmp(const char* dest, const char* src)
函数功能:比较字符串dest和src。
函数说明
当dest< src时,返回值 < 0
当dest= src时,返回值 = 0
当dest> src时,返回值 > 0
函数实现

int _strcmp(const char* dest, const char* src) { assert(dest != nullptr&&src != nullptr); //判断dest指针和src指针是否为空,若为空抛出异常 while (*dest&&*src && (*dest == *src)) { dest++; src++; } return (*dest - *src); }

strncmp
函数原型:int _strncmp(const char* dest, const char* src, size_t n)
函数功能:比较字符串dest和src的前n个字符。
函数说明: 如果前n字节完全相等,返回值就为0;在前n字节比较过程中,如果出现dest[n]与src[n]不等,则返回(dest[n]-src[n])。
函数实现

int _strncmp(const char* dest, const char* src, size_t n) { assert(dest != nullptr&&src != nullptr); //判断dest指针和src指针是否为空,若为空抛出异常 if (!n)//若n为0,则返回0; return 0; while (n--&&*dest&&*src && (*dest == *src)) { dest++; src++; } return (*dest - *src); }

strstr
函数原型
函数功能:找出src字符串在dest字符串中第一次出现的位置(不包括src的'\0')
函数说明:返回该位置的指针,如找不到,返回空指针。
函数实现

char* _strstr(const char* dest, const char* src) { assert(dest != nullptr); //判断dest指针是否为空,若为空抛出异常 if (!src) return (char*)dest; while (*dest) { const char* destTmp = dest; const char* srcTmp = src; while (*srcTmp == *destTmp && (*srcTmp))//限时*srcTmp与*destTmp比较后相等至'\0'时继续访问出现越界 { srcTmp++; destTmp++; } if (!(*srcTmp)) return (char*)destTmp; dest++; } return nullptr; }

如有错误请指出,谢谢。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/09ac4fc3bfeaa741495b87fe8cdcb902.html