C语言第五十三弹----模拟使用strncmp函数

简介: C语言第五十三弹----模拟使用strncmp函数

使用C语言模拟使用strncmp函数

trncmp 是一个 C 语言标准库函数,用于比较两个字符串的前 n 个字符是否相等。它的函数声明为:

int strncmp(const char *str1, const char *str2, size_t n);

其中,str1 和 str2 是要被比较的两个字符串,n 是指定要比较的字符数。该函数返回值为 0 时,表示两个字符串在前 n 个字符上相等;返回值小于 0 时,表示 str1 在前 n 个字符上小于 str2;返回值大于 0 时,表示 str1 在前 n 个字符上大于 str2

思路:通过指针逐个比较两个字符串的单个字符的ASCII,如果前n个字符ASCII相同,则返回一个整数,如果不同,则返回一个小于0的数。

代码如下:

#include <stdio.h>
#include <assert.h>
int my_strncmp(const char* str1, const char* str2, size_t num)
{
  assert(str1 && str2);
  while ( num-- && *str1 == *str2)
  {
    if (num == 0)//如果为0证明前num个字符相同,返回0
    {
      return 0;
    }
    str1++;
    str2++;
  }
  //如果不符合循环条件则退出判断两者ASCII
  if (*str1 > *str2)
  {
    return 1;
  }
  else
  {
    return -1;
  }
}
int main()
{
  char arr1[10] = "abcfe";
  char arr2[10] = "abche";
  int ret = my_strncmp(arr1, arr2, 3);
  printf("%d\n", ret);
  return 0;
}

优化

#include <stdio.h>
#include <assert.h>
int my_strncmp(const char* str1, const char* str2, size_t num)
{
  assert(str1 && str2);
  while (num-- > 0 && (*str1 || *str2)) {//只要其中一个不为空即可
    if (*str1 != *str2) {//不同进行判断返回 相同则++
      return (*str1 > *str2) ? 1 : -1;//使用三目运算符进行返回
    }
    str1++;
    str2++;
  }
  return 0;//循环结束,证明相等,返回0
}
int main()
{
  char arr1[10] = "abcfe";
  char arr2[10] = "abche";
  int ret = my_strncmp(arr1, arr2, 4);
  printf("%d\n", ret);
  return 0;
}
相关文章
|
2天前
|
C语言
C语言5 字符输出函数和格式输出函数
C语言5 字符输出函数和格式输出函数
6 1
|
4天前
|
算法 编译器 C语言
深入浅出C语言—【函数】下
深入浅出C语言—【函数】下
|
16天前
|
Java C语言 C++
定义C语言的int main()函数
定义C语言的int main()函数
|
17天前
|
存储 移动开发 C语言
技术心得记录:嵌入式开发中常用到的C语言库函数
技术心得记录:嵌入式开发中常用到的C语言库函数
11 1
|
2天前
|
存储 C语言
C语言6 字符串输入和格式输入函数
C语言6 字符串输入和格式输入函数
7 0
|
17天前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
19 0
|
17天前
|
C语言
C语言实现猜数字游戏:代码详解与函数解析
C语言实现猜数字游戏:代码详解与函数解析
12 0
|
17天前
|
程序员 C语言
C语言内存管理:malloc、calloc、realloc与free函数详解
C语言内存管理:malloc、calloc、realloc与free函数详解
13 0
|
18天前
|
C语言
C语言中的函数指针、指针函数与函数回调
C语言中的函数指针、指针函数与函数回调
11 0
|
18天前
|
存储 C语言
C语言中的变量与函数详解
C语言中的变量与函数详解
8 0