==================
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] 。
提示:該函數區分大小寫。