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;
}

运行结果

目录
相关文章
|
6月前
strlen,strcpy,stract,strcmp,strstr函数的模拟实现
strlen,strcpy,stract,strcmp,strstr函数的模拟实现
59 3
|
6月前
|
C语言
字符串函数`strlen`、`strcpy`、`strcmp`、`strstr`、`strcat`的使用以及模拟实现
字符串函数`strlen`、`strcpy`、`strcmp`、`strstr`、`strcat`的使用以及模拟实现
105 1
|
15天前
|
C语言
不使用 strlen()
【10月更文挑战第32天】这段 C 语言程序用于计算用户输入的字符串长度,而不使用 `strlen()` 函数。程序通过逐个读取字符直到遇到字符串结束符 `\0`,统计字符个数并输出字符串长度。例如,输入 &quot;runoob&quot; 时,输出的字符串长度为 6。
23 0
C实现字符操作函数,strcpy, strcat, strcmp, memcpy
C实现字符操作函数,strcpy, strcat, strcmp, memcpy
49 0
|
6月前
|
C语言
深入理解字符串函数和字符函数(islower和isupper、tolower和toupper、strlen、strcpy、strcat、strcmp)(一)
深入理解字符串函数和字符函数(islower和isupper、tolower和toupper、strlen、strcpy、strcat、strcmp)(一)
|
算法 C语言
你应该知道的C语言干货(4)(strncpy,strncmp,strncat,strstr,strtok)
该库函数作用和strcpy很相似,不同点在于
76 0
你应该知道的C语言干货(4)(strncpy,strncmp,strncat,strstr,strtok)
strlen的实现
strlen的实现
52 0
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.相反返回值小于零。
362 0