C/C++字符串使用整理——字符串比較函數strcmp() 詳解


strcmp() 字符串比較函數詳解

 

一、介紹

 

原型:int strcmp(const char *s1, const char *s2);

頭文件:#include <string.h>

 

功能:用來比較兩個字符串

 

參數:s1、s2為兩個進行比較的字符串

 

返回值:若s1、s2字符串相等,則返回零;若s1大於s2,則返回大於零的數;否則,則返回小於零的數。

 

說明:strcmp()函數是根據ACSII碼的值來比較兩個字符串的;strcmp()函數首先將s1字符串的第一個字符值減去s2第一個字符,若差值為零則繼續比較下去;若差值不為零,則返回差值。

 

二、樣例介紹

 

  1. #include <string.h>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.         char *p="aBc";
  8.         char *q="Abc";
  9.         char *h="abc";
  10.        
  11.         cout<<"strcmp(p,q):"<<strcmp(p,q)<<endl;
  12.         cout<<"strcmp(p,h):"<<strcmp(p,h);
  13.        
  14.         return 0;  
  15. }
  16.  
  17. //結果:
  18. //strcmp(p,q):32
  19. //strcmp(p,h):-32

 

三、與strncmp的比較

 

strcmp與strncmp都是用來比較字符串的,區別在於能否比較指定長度字符串。

 

strcmp

C/C++函數,比較兩個字符串 

設這兩個字符串為str1,str2, 

若str1==str2,則返回零; 

若str1 > str2,則返回正數; 

若str1< str2,則返回負數。

 

即:兩個字符串自左向右逐個字符相比(按ASCII值大小相比較),直到出現不同的字符或遇’\0’為止。

 

如: 

strcmp(“abcd”,”abcd”)的返回值是 0; 

strcmp(“abcd”,”dcba”)的返回值是 -1; 

strcmp(“dcba”,”abcd”)的返回值是 1;

 

還有一種情況: 

strcmp(“A”,”C”)的返回值是 -2; 

strcmp(“C”,”A”)的返回值是 2; 

這個確切的數值是依賴不同的c的實現

 

特別注意:strcmp(const char s1,const char s2)這里面只能比較字符串,即可用於比較兩個字符串常量,或比較數組和字符串常量,不能比較數字等其他形式的參數。

 

strncmp

strncmp函數是指定比較size個字符。也就是說,如果字符串s1與s2的前size個字符相同,函數返回值為0。此函數功能即比較字符串str1和str2的前maxlen個字符。如果前maxlen字節完全相等,返回值就=0;在前maxlen字節比較過程中,如果出現str1[n]與str2[n]不等,則依次比較str1和str2的前n位,設i(i< n)為兩字符串首次的不同位,則返回(str1[i]-str2[i])。

 

如; 

str1=”ABCDHG”,str2=”ABCDEF” 

strncmp(str1,str2,4)的返回值是 0; 

strncmp(str1,str2,5)的返回值是 1;

 

說明:比較字符串str1和str2的大小,如果str1小於str2,返回值就<0,反之如果str1大於str2,返回值就>0,如果str1等於str2,返回值就=0,len指的是str1與str2的比較的字符數。此函數功能即比較字符串str1和str2的前len個字符[1] 。 

提示:該函數區分大小寫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM