模拟实现库函数--strcmp(字符二进制比较)

简介: 模拟实现库函数--strcmp(字符二进制比较)

一.对库函数strcmp的了解



通过在MSDN或者cplusplus网站上检索strcpy

df795ac2e09d4ff8bd88f318ea1ff80b.png

通过对strcmp的检索,可以初步了解到strcmp以下信息:

1.比较的是字符串的大小

2.如果str1中得字符比str2中得字符大,返回一个>0得数字

3.如果str1中得字符比str2中得字符小,返回一个<0得数字

4.如果str1中得字符和str2中得字符内容一样,返回0

5.执行得是字符得二进制比较


二.模拟实现库函数strcmp



思路:

两个字符串中的内容从第一个字符开始逐一比较。

1.若比较的字符相同,则跳过该字符比较下一个字符

2.若不同则比较两字符串的大小后返回int 类型的一个数值

3.若两字符串始终相同,则直至遇到\0终止符后停止比较并返回值


#include <stdio.h>
#include <assert.h>
int my_strcmp(const char* str1, const char* str2)
{
  assert(str1 && str2);
  //*str1++ == *str2++ 得情况下 会将下一次不符合得结果留再str1和str2中
  //*str1或者*str2再比较时遇到\0应直接终止比较
  while (*str1 == *str2 && *str1 != '\0' && *str2 != '\0')
  {
    str1++;
    str2++;
  }
  return *str1 - *str2;
}
int main()
{
  char arr1[] = "abcqr";
  char arr2[] = "abcq";
  int ret = my_strcmp(arr1, arr2);
  if (ret < 0)
    printf("str1<str2");
  else if (ret > 0)
    printf("str1>str2");
  else
    printf("str1=str2");
  return 0;
}


三.strcmp的比较形式



那么,两个字符串中的每一个字符是如何比较的呢?


由于比较的是两个字符串里的字符,字符以ASCII码值进行存储,ASCII码值本质是一个整数,而在内存中,无论是字符、字母、数字、符号等都是以二进制的形式存储的,因此strcmp比较的两个字符也是比较的存储在内存中二进制的大小。


对面上面这个代码

f95b1021039541ea8ecb99c4eb7347f0.png

由于字符r的二进制大小比\0的二进制大小大,因此arr1>arr2,返回一个大于0的数字


运行结果如下:

083dac8c4e4c44e1ad19aa3df591c175.png


相关文章
|
8月前
[字符串和内存函数]strcmp字符串函数的详解和模拟
[字符串和内存函数]strcmp字符串函数的详解和模拟
64 1
|
8月前
13.C语言:用printf函数输出数据
13.C语言:用printf函数输出数据
144 0
|
8月前
|
C语言
[字符串和内存函数]strcat字符串函数的详解和模拟
[字符串和内存函数]strcat字符串函数的详解和模拟
56 0
|
8月前
|
存储 C语言
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现2
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现
|
8月前
|
存储 C语言
c语言获取终端输入字符串的函数scanf,gets,fgets
c语言获取终端输入字符串的函数scanf,gets,fgets
172 1
|
存储 算法
探索字符与字符串:基本库函数的使用(二)
探索字符与字符串:基本库函数的使用(二)
49 0
|
C语言
【嵌入式C语言】字符转字符串,整形数字转字符串技巧(sprintf函数妙用)
【嵌入式C语言】字符转字符串,整形数字转字符串技巧(sprintf函数妙用)
281 0
|
8月前
|
存储 C语言
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现1
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现
|
8月前
|
C语言
深入理解C语言中的printf函数及数据输出
深入理解C语言中的printf函数及数据输出
585 0
|
8月前
|
存储 C语言
C语言用printf函数输出数据
C语言用printf函数输出数据
101 0