目录
前言:
回顾一下,昨天我们学习了strcmp函数,用于比较两个字符串,今天我们来学习strncmp,用于比较两字符串指定个数的字符,这个函数使得比较两个字符串更加灵活,更具多样性。
一、引用头文件
所有的库函数都要引用头文件,字符串类函数也一样,它们的头文件均为<cstring> (string.h)
引用方式如下:
C语言
#include <string.h>
C++
#include <cstring>
二、strncmp函数的作用
比较两个字符串中指定个数的字符。
三、理解strncmp函数的定义
int strncmp ( const char * str1, const char * str2, size_t num );
1、返回类型
C语言标准规定:库函数strncmp的返回类型和strcmp一样,是一个int型的数据(一个整数),当返回的整数大于0时,说明str1指向的字符串大于str2指向的字符串;当返回的整数是等于0的,则str1指向的字符串和str2指向的字符串是一样的;当返回的整数小于0时,str1指向的字符串小于str2指向的字符串。
2、参数
C语言标准规定:库函数strncmp的参数有三个,第一个为const char* str1(一个字符指针,指向要比较的字符串之一),该参数前加上了const使其具备了常属性--不可被更改,一定程度上提高了函数的安全性;第二个为const char* str2(一个字符指针,指向另一个要比较的字符串),该参数前加上了const使其具备了常属性--不可被更改,一定程度上提高了函数的安全性,第三个为size_t num(无符号整型,不能表示负数)表示要比较的字符个数。
四、使用strncmp函数
1、编写代码
#include <string.h>
#include <stdio.h>
int main()
{
char arr1[] = "abcd";
char arr2[] = "abcc";
if (strncmp(arr1, arr2,3) > 0)
{
printf("%s > %s", arr1, arr2);
}
else if (strncmp(arr1, arr2,3) < 0)
{
printf("%s < %s", arr1, arr2);
}
else
{
printf("前三位,%s = %s", arr1, arr2);
}
return 0;
}
2、调试运行
五、注意要点
无。(想不出了,挺简单的,直接用吧,无坑)
六、模拟实现
#include <stdio.h>
int my_strncmp(const char* str1, const char* str2,size_t num)
{
while (num--)
{
if (*str1 == '\0' && *str2 == '\0')//当num未为0前,两字符串已全部比完,直接退出
break;
if (*str1 == *str2)
{
str1++;
str2++;
}
else
{
return *str1 - *str2;
}
}
return 0;
}
int main()
{
char arr1[] = "ab";
char arr2[] = "ab";
if (my_strncmp(arr1, arr2,4) > 0)
{
printf("%s > %s", arr1, arr2);
}
else if (my_strncmp(arr1, arr2,4) < 0)
{
printf("%s < %s", arr1, arr2);
}
else
{
printf("前三位,%s = %s", arr1, arr2);
}
return 0;
}
每日一学,今天你又超过了百分之九十九的人。
如果本篇文章对你有帮助,请点个关注和赞吧!