複製鏈接
請複製以下鏈接發送給好友

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的值。 [1-2] 
中文名
strncmp
外文名
strncmp
作    用
比較s1和s2字符串
應    用
C語言
定    義
指定比較size個字符
輸    出
負數、0、正數

strncmpstrncmp語法

strncmp函數聲明

int strncmp(const char *str1, const char *str2, size_t n)

strncmp參數

  • str1-- 要進行比較的第一個字符串。
  • str2-- 要進行比較的第二個字符串。
  • n-- 要比較的最大字符數。 [3] 

strncmp返回值

該函數返回值如下:
  • 如果返回值 < 0,則表示 str1 小於 str2。
  • 如果返回值 > 0,則表示 str2 小於 str1。
  • 如果返回值 = 0,則表示 str1 等於 str2。 [3-4] 

strncmp功能比較

函數 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] 
(3)總結
兩者不同之處是,strncmp函數是指定比較size個字符,strcmp函數比較整個字符,直到出現不同的字符或遇"\0"為止。

strncmp應用示例

strncmp示例1

#include <cstring>
#include <cstdio>
int main(){
    char *buf1="aaabbb",*buf2="bbbccc",*buf3="ccc";
    int ptr;
    ptr=strncmp(buf2,buf1,3);
    if(ptr>0)
        printf("buffer2 is greater than buffer1\n");
    else if(ptr<0)
        printf("buffer2 is less than buffer1\n");
    ptr=strncmp(buf2,buf3,3);
    if(ptr>0)
        printf("buffer2 is greater than buffer3\n");
    else if(ptr<0)
        printf("buffer2 is less than buffer3\n");
    return 0;
}
ouput:
buffer2 is greater than buffer1
buffer2 is less than buffer3

strncmp示例 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...
foundR2D2
foundR2A6

strncmp拓展延伸-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個字符。 [5] 
提示:該函數區分大小寫。
示例:
<?php
$str1="Ilikephp!";
$str2="ianfine!";
echo strncmp($str1,$str2,2);
?>
結果為:-1
參考資料
  • 1.    譚浩強 . C程序設計(第4版):清華大學出版社,2010.6
  • 2.    張權 .Objective-C函數速查實例手冊:人民郵電出版社,2014.2
  • 3.    尹德淳. C函數速查手冊:人民郵電出版社 ,2009.4
  • 4.    陳超 . C語言常用函數速查手冊 :化學工業出版社 ,2010.6
  • 5.    列旭松,陳文 . PHP核心技術與最佳實踐(第2版):機械工業出版社,2018.9