strcmp与strncmp的实现和比较

简介: strcmp与strncmp的实现和比较

strcmp不受长度限制的字符串函数,strncmp受长度限制

查阅资料比较strncmp比strcmp多一个长度n的参数去控制比较的长度

两个函数都返回一个整数值去判断两个字符串谁大

下面简单实现

strcmp实现

int my_strcmp(const char* str1, const char* str2)
{
  assert(str1 && str2);
  //断言判断一下str1和str2
  while (*str1 || *str2)
  {//判断是否有字符串到'\0'
    if (*str1 != *str2)
      break;
    str1++;
    str2++;
  }
  return *str1 - *str2;
  //判断小于等于或大于0,来比较那个字符串大
}

strncmp的实现

int my_strncmp(const char* str1, const char* str2,int n)
{
  assert(str1 && str2);
  //断言判断一下str1和str2
  while (--n&&(*str1 || *str2))
  {//判断是否有字符串到'\0'
    //用n纪录判断的字符数
    if (*str1 != *str2)
      break;
    str1++;
    str2++;
  }
  return *str1 - *str2;
  //判断小于等于或大于0,来比较那个字符串大
}

通过比较可以发现strncmp相对于strcmp来说更为细致,strncmp

可以完成一些strcmp无法完成的任务

完整代码和样例测试

#include <iostream>
using namespace std;
#include <string>
#include <assert.h>
int my_strncmp(const char* str1, const char* str2,int n)
{
  assert(str1 && str2);
  //断言判断一下str1和str2
  while (--n&&(*str1 || *str2))
  {//判断是否有字符串到'\0'
    //用n纪录判断的字符数
    if (*str1 != *str2)
      break;
    str1++;
    str2++;
  }
  return *str1 - *str2;
  //判断小于等于或大于0,来比较那个字符串大
}
int main()
{
  char a[] = "abcd";
  char b[] = "abd";
  cout<<my_strncmp(a, b,2)<<endl;
  cout << strncmp(a, b,2);
  return 0;
}

运行结果

目录
相关文章
|
1月前
strlen,strcpy,stract,strcmp,strstr函数的模拟实现
strlen,strcpy,stract,strcmp,strstr函数的模拟实现
23 3
|
16天前
|
C语言
字符串函数`strlen`、`strcpy`、`strcmp`、`strstr`、`strcat`的使用以及模拟实现
字符串函数`strlen`、`strcpy`、`strcmp`、`strstr`、`strcat`的使用以及模拟实现
|
4月前
|
C语言
深入理解字符串函数和字符函数(islower和isupper、tolower和toupper、strlen、strcpy、strcat、strcmp)(一)
深入理解字符串函数和字符函数(islower和isupper、tolower和toupper、strlen、strcpy、strcat、strcmp)(一)
|
9月前
C实现字符操作函数,strcpy, strcat, strcmp, memcpy
C实现字符操作函数,strcpy, strcat, strcmp, memcpy
25 0
|
8月前
|
算法 C语言
你应该知道的C语言干货(4)(strncpy,strncmp,strncat,strstr,strtok)
该库函数作用和strcpy很相似,不同点在于
47 0
你应该知道的C语言干货(4)(strncpy,strncmp,strncat,strstr,strtok)
|
11月前
strlen, strcpy,strcmp,strcat,strncpy,strncmp,strncat,strst库函数的详细解析以及模拟实现
🐰strlen 🐰模拟strlen 🐰strcpy 🐰模拟strcpy 🐰strcat 🐰模拟strcat 🐰strcmp 🐰模拟strcmp 🐰strncpy 🐰strncat 🐰strncmp 🐰strstr 🐰模拟strstr
strcmp函数详解
如果字符串不一样,并且字符串1>字符串2,则返回值>0.相反返回值小于零。
250 0
scanf fscanf sscanf printf fprintf sprintf的区别和使用 fseek的使用
scanf fscanf sscanf printf fprintf sprintf的区别和使用 fseek的使用
91 0