strcmp() 字符串比較函數詳解
一、介紹
原型:int strcmp(const char *s1, const char *s2);
頭文件:#include <string.h>
功能:用來比較兩個字符串
參數:s1、s2為兩個進行比較的字符串
返回值:若s1、s2字符串相等,則返回零;若s1大於s2,則返回大於零的數;否則,則返回小於零的數。
說明:strcmp()函數是根據ACSII碼的值來比較兩個字符串的;strcmp()函數首先將s1字符串的第一個字符值減去s2第一個字符,若差值為零則繼續比較下去;若差值不為零,則返回差值。
二、樣例介紹
- #include <string.h>
- #include <iostream>
- using namespace std;
- int main()
- {
- char *p="aBc";
- char *q="Abc";
- char *h="abc";
- cout<<"strcmp(p,q):"<<strcmp(p,q)<<endl;
- cout<<"strcmp(p,h):"<<strcmp(p,h);
- return 0;
- }
- //結果:
- //strcmp(p,q):32
- //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] 。
提示:該函數區分大小寫。