C语⾔strncmp()函数
描述
int strncmp(const char *str1, const char *str2, size_t n) 把 str1 和 str2 进⾏⽐较,最多⽐较前 n 个字节。声明
下⾯是 strncmp() 函数的声明。
int strncmp(const char *str1, const char *str2, size_t n)
参数
str1 -- 要进⾏⽐较的第⼀个字符串。
str2 -- 要进⾏⽐较的第⼆个字符串。
n -- 要⽐较的最⼤字符数。
返回值
该函数返回值如下:
如果返回值 < 0,则表⽰ str1 ⼩于 str2。
如果返回值 > 0,则表⽰ str2 ⼩于 str1。
如果返回值 = 0,则表⽰ str1 等于 str2。
实例
下⾯的实例演⽰了 strncmp() 函数的⽤法。
#include <stdio.h>
#include <string.h>
int main(void){
/* ANSI码值: A:65 B:66 C:67
ANSI码值: a:97 b:98 c:99 */
char str1[5] = "ABcA";
char str2[5] = "ABcH";
char str3[5] = "ABA";
char str4[5] = "ABC";
char str5[5] = "aBC";
char str6[5] = "ABB";
int ret1 = strncmp(str1,str2,3);
int ret2 = strncmp(str3,str4,3);
int ret3 = strncmp(str5,str6,3);
printf("%d\n",ret1);//0
printf("%d\n",ret2);//-2
printf("%d\n",ret3);//32
return 0;
}
打印结果:
说明:strncmp() 与strcmp()函数不同,在VScode编译软件⾥⾯strcmp()返回的是1、0、-1,strncmp()函数返回的则是ANSI码值。但也有些编译软件strcmp()返回值是ANSI码值,这些都不重要,重要的是知道俩者之间的⽤法以及区别就可以了。
在该段代码中strncmp()函数中⾸先它会去要⽐较的俩个字符串是否相同,如果不相同再进⾏ANSI码值作⽐较运算。如果超出
了strncmp()函数设置的⽐较字符数,则不再去作⽐较运算。如果在⽐较中第⼀个字符串就不相同,那么只会对第⼀个字符串作ANSI码⽐较运算,后⾯的字符串不论是否相同都不再作⽐较运算。
代码分析:
c++中string的用法1、从打印结果可以看出第⼀段ret1返回的⽐较值是0,因为设置的strncmp()函数⽐较字符数是3,也就是说它只会对str1、str2前3位作⽐较运算,由于前3位字符相同所以返回的值是0,后⾯超出的字符数不再作⽐较运算。
2、在第⼆段ret2返回值是-2,ret2的str
3、str4的前俩个字符相同,到了第三个字符的时候⼀个是A,⼀个是C,根据ANSI码值A:65-C:67所以得到的返回值是-2。
3、在第三段ret3返回值是32,ret3的str5、str6的第⼀个字符就不相同,所以只会对第⼀个字符串作ANSI码⽐较运算,即a:97-A:65所以得到的返回值是32,后⾯的字符串不论是否相同都不再作⽐较运算。
以上就是strncmp()函数使⽤⽅式以及说明!
完
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论