
strncmp
strncmp函式为字元串比较函式,字元串大小的比较是以ASCII 码錶上的顺序来决定,此顺序亦为字元的值。其函式声明为int strncmp ( const char * str1, const char * str2, size_t n );功能是把 str1 和 str2 进行比较,最多比较前 n 个位元组,若str1与str2的前n个字元相同,则返回0;若s1大于s2,则返回大于0的值;若s1 小于s2,则返回小于0的值。
基本介绍
- 中文名:strncmp
- 外文名:strncmp
- 作用:比较s1和s2字元串
- 套用:C语言
- 定义:指定比较size个字元
- 输出:负数、0、正数
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 与函式strcmp极为类似,但功能不完全相同,区别如下:
(1)strncmp函式
用来比较s1和s2字元串的前n个字元。如果两个字元串相等的话,strncmp将返回0。如果s1是s2的一个子串的话,s1小于s2。
(2)strcmp函式
同样用于比较两个字元串 ,设这两个字元串为str1,str2
若str1==str2,则返回零;
若str1 > str2,则返回正数;
若str1< str2,则返回负数。
即:两个字元串自左向右逐个字元相比(按ASCII值大小相比较),直到出现不同的字元或遇"\0"为止。
(3)总结
两者不同之处是,strncmp函式是指定比较size个字元,strcmp函式比较整个字元,直到出现不同的字元或遇"\0"为止。
套用示例
示例1
#include<string.h>#include<stdio.h>int main(void){char *buf1="aaabbb",*buf2="bbbccc",*buf3="ccc";int ptr;ptr=strncmp(buf2,buf1,3);if(ptr>0)printf("buffer2 is greater than buffer1\n");elseif(ptr<0)printf("buffer2 is less than buffer1\n");ptr=strncmp(buf2,buf3,3);if(ptr>0)printf("buffer2 is greater than buffer3\n");elseif(ptr<0)printf("buffer2 is less than buffer3\n");return(0);}
ouput:buffer2 is greater than buffer1buffer2 is less than buffer3
示例 2
/*strncmpexample*/#include<stdio.h>#include<string.h>int main(){char str[][5]={"R2D2","C3PO","R2A6"};int n;puts("Looking for R2 as tromechdroids...");for(n=0;n<3;n++){if(strncmp(str[n],"R2xx",2)==0){printf("found%s\n",str[n]);}}return0;}
ouput:Looking for R2 as tromechdroids...foundR2D2foundR2A6
拓展延伸-PHP中strncmp
函式名: strncmp ()
功 能:比较字元串的前N个字元
用 法:
int strncmp(stringstr1,charstr2,intlen);
说明:比较字元串str1和str2的大小,如果str1小于str2,返回值就<0,反之如果str1大于str2,返回值就>0,如果str1等于str2,返回值就=0,len指的是str1与str2的比较的字元数。此函式功能即比较字元串str1和str2的前len个字元。
提示:该函式区分大小写。
示例:
<?php$str1="Ilikephp!";$str2="ianfine!";echo strncmp($str1,$str2,2);?>
结果为:-1