strcmp 的使用和模拟

目录

函数介绍:

头文件:

语法:

代码演示:

函数模拟:


函数介绍:

  • strcmp是比较大小的函数。
  • 从字符串开始进行比较,如果两个相同位置的字符相同,那么继续往下进行比较,直到遇见不同的位置。
  • 从本质上,比较的是相对位置字符的ASCII值。
  • 比较的标准:
  • 当str1大于str2时,返回值是大于0的数
  • 当str1小于str2时,返回值是小于0的数
  • 当str1和str2相同时,返回值是0

头文件:

#include<string.h>

语法:

int strcmp(const char* str1,const char * str2) 

代码演示:


#include <iostream>
#include<string.h>
 
int main()
{
    char arr1[ ] = "ABCD";
    char arr2[ ] = "012345";
    char arr3[ ] = "EFGH";
    char arr4[ ] = "ABCD";

    int a=strcmp(arr1,arr2); // 'A'的ASCII值是81 '0'的ASCII值是48,所以返回值是正数。
    int b=strcmp(arr1,arr3); // 'A'的ASCII值是81 'E'的ASCII值是85,所以返回值是负数。
    int c=strcmp(arr1,arr4); // 字符串的对应位置字符相同,所以返回值是0。

    

    printf("%d %d %d",a,b,c);
    return 0;
}    

 

函数模拟:

int my_strcmp(const char* str1, const char* str2)
{
    int ret = 0;
    assert(src != NULL);
    assert(dest != NULL);
    while (*str1 == *str2) 

  //进行对应位置的字符是否相同的判断,如果相同,那么比较ASCII值就是下一个字符
    {
        if (*str1 == '\0')
            return 0;
        str1++;
        str2++;
    }
    return *str1 - *str2; 

 //相对因位置的字符不相同时,进行相减,相减的本质是ASCII值相减。

 //得到的结果由标准来划分,正数str1大,负数str2大,等于0二者相等。
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值