老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

c語言如何進行字符串比較

這篇文章將為大家詳細講解有關c語言如何進行字符串比較,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創新互聯公司自2013年創立以來,先為來鳳等服務建站,來鳳等地企業,進行企業商務咨詢服務。為來鳳企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

C語言是什么

C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用于底層開發,使用C語言可以以簡易的方式編譯、處理低級存儲器。

比較方法:1、bcmp(),比較字符串的前n個字節是否相等;2、strcmp(),區分大小寫的比較字符串;3、stricmp(),不區分大小寫的比較字符串;4、strncmp()或strnicmp(),區分大小寫的比較字符串的前n個字符。

本教程操作環境:windows7系統、c99版本、Dell G3電腦。

使用bcmp()--比較內存(字符串)的前n個字節是否相等

原型為:

int bcmp(const void *s1, const void * s2, int n);

【參數】s1, s2 為需要比較的兩塊內存(或兩個字符串),n 為要比較的長度。

【返回值】如果 s1, s2 的前 n 個字節相等或者 n 等于 0,則返回 0,否則返回非 0 值。

bcmp() 函數不檢查NULL。

實際上,bcmp() 和 memcmp() 功能相同,用來比較內存塊的前 n 個字節是否相等,但是 s1, s2 兩個參數為指針,又很奇怪的位于 string.h 文件中,也可以用來比較字符串。

示例:

#include 
#include 
int main ()
{
    char *s1 = "Golden Global View";
    char *s2 = "Golden Global View";
    if( !bcmp(s1, s2, 7) )
        printf("s1 equal to s2 in first 7 bytes");
    else
        printf("s1 not equal to s2 in first 7 bytes");
    return 0;
}

使用strcmp()--比較字符串(區分大小寫)

其原型為:

int strcmp(const char *s1, const char *s2);

【參數】s1, s2 為需要比較的兩個字符串。

字符串大小的比較是以ASCII 碼表上的順序來決定,此順序亦為字符的值。strcmp()首先將s1 第一個字符值減去s2 第一個字符值,若差值為0 則再繼續比較下個字符,若差值不為0 則將差值返回。例如字符串"Ac"和"ba"比較則會返回字符"A"(65)和'b'(98)的差值(-33)。

【返回值】若參數s1 和s2 字符串相同則返回0。s1 若大于s2 則返回大于0 的值。s1 若小于s2 則返回小于0 的值。

注意:strcmp() 以二進制的方式進行比較,不會考慮多字節或寬字節字符。

示例:

#include 
main(){
    char *a = "aBcDeF";
    char *b = "AbCdEf";
    char *c = "aacdef";
    char *d = "aBcDeF";
    printf("strcmp(a, b) : %d\n", strcmp(a, b));
    printf("strcmp(a, c) : %d\n", strcmp(a, c));
    printf("strcmp(a, d) : %d\n", strcmp(a, d));
}

輸出:

strcmp(a, b) : 32
strcmp(a, c) :-31
strcmp(a, d) : 0

使用stricmp()--比較字符串(不區分大小寫)    

原型為:

int strcmp(char *s1, char *s2);

【參數說明】s1, s2 為需要比較的兩個字符串。

字符串大小的比較是以ASCII 碼表上的順序來決定,此順序亦為字符的值。stricmp()首先將s1 第一個字符值減去s2 第一個字符值,若差值為0 則再繼續比較下個字符,若差值不為0 則將差值返回。例如字符串"Ac"和"ba"比較則會返回字符"A"(65)和'b'(98)的差值(-33)。

【返回值】若參數s1 和s2 字符串相同則返回0。s1 若大于s2 則返回大于0 的值。s1 若小于s2 則返回小于0 的值。

注意:stricmp()是Windows下特有的,linux下具有相同功能的函數是strcasecmp(),包含在頭文件strings.h下。

另外一個不區分大小寫比較字符串的函數是strcmpi(),strcmpi()是stricmp()的宏定義,實際未提供此函數。

示例:比較兩個字符串的大小。

#include
#include
int main(void)
{
    /*定義兩個字符串*/
    char* s1 = "http://see.xidian.edu.cn/cpp/u/biaozhunku/";
    char* s2 = "http://see.xidian.edu.cn/cpp/shujujiegou/";
    /*比較字符串(不分大小寫)*/
    int result = stricmp(s1,s2);  // 也可以改成strcmpi()
    if(result>0)
    {
        printf("Result: s1 > s2");
    }
    else if(result<0)
    {
        printf("Result: s1 < s2");
    }
    else if(result == 0)
    {
        printf("Result: s1 = s2");
    }   
    getchar();/*等待用戶輸入個字符,然后退出*/
    return 0;
}

輸出:

Result: s1 > s2

使用strncmp()--比較字符串的前n個字符(區分大小寫)    

其原型為:

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

【參數】str1, str2 為需要比較的兩個字符串,n為要比較的字符的數目。

字符串大小的比較是以ASCII 碼表上的順序來決定,此順序亦為字符的值。strncmp()首先將s1 第一個字符值減去s2 第一個字符值,若差值為0 則再繼續比較下個字符,直到字符結束標志'\0',若差值不為0,則將差值返回。例如字符串"Ac"和"ba"比較則會返回字符"A"(65)和'b'(98)的差值(-33)。

注意:要比較的字符包括字符串結束標志'\0',而且一旦遇到'\0'就結束比較,無論n是多少,不再繼續比較后邊的字符。

【返回值】若str1與str2的前n個字符相同,則返回0;若s1大于s2,則返回大于0的值;若s1 若小于s2,則返回小于0的值。

注意:如果兩個字符不同,GCC返回該字符對應的ASCII碼的差值,VC返回-1或1。但是讓人為難的是,strnicmp()、strcmp()、stricmp()在GCC和VC下都返回-1或1,而不是ASCII的差值。

實例:對2組字符串進行比較。

#include
#include
int main(void){
    char* s1 = "http://see.xidian.edu.cn/cpp/u/xitong/";
    char* s2 = "HTTP://see.xidian.edu.cn/cpp/u/xitong/";
    char* s3 = "abc";
    char* s4 = "abcxyz";
    char* s5 = "123456";
    char* s6 = "123";
    printf("s1-s2=%d\n", strncmp(s1, s2, 20));  // 是否區分大小寫
    printf("s3-s4=%d\n", strncmp(s3, s4, 100));  // s3的長度小于s4
    printf("s5-s6=%d\n", strncmp(s5, s6, 100));  // s5的長度大于s6
    return 0;
}

VC6.0下運行結果:

s1-s2=1
s3-s4=-1
s5-s6=1

GCC下運行結果:

s1-s2=32
s3-s4=-120
s5-s6=52

使用strnicmp()--比較字符串的前n個字符(區分大小寫)    

原型為:

int strnicmp ( const char * str1, const char * str2, size_t n );

【參數】str1, str2 為需要比較的兩個字符串,n為要比較的字符的數目。

【返回值】若str1與str2的前n個字符相同,則返回0;若s1大于s2,則返回大于0的值;若s1 若小于s2,則返回小于0的值。

與strncmp()不同的是,如果兩個字符不同,GCC和VC都返回-1或1,而不是返回對應的ASCII的差值。

有關strnicmp()的其他說明請查看strncmp(),這里僅舉例演示,不再贅述。

另外一個不區分大小寫比較字符串前n個字符的函數是strncmpi(),strncmpi()是strnicmp()的宏定義,實際未提供此函數。

示例:對6組字符串進行比較。

#include
#include
int main(void){
    char* s1 = "http://see.xidian.edu.cn/cpp/u/xitong/";
    char* s2 = "HTTP://see.xidian.edu.cn/cpp/u/xitong/";
    char* s3 = "abc";
    char* s4 = "abcxyz";
    char* s5 = "123456";
    char* s6 = "123";
    printf("s1-s2=%d\n", strnicmp(s1, s2, 20));  // 是否區分大小寫
    printf("s3-s4=%d\n", strnicmp(s3, s4, 100));  // s3的長度小于s4
    printf("s5-s6=%d\n", strnicmp(s5, s6, 100));  // s5的長度大于s6
    return 0;
}

VC6.0下運行結果:

s1-s2=0
s3-s4=-1
s5-s6=1

GCC下運行結果:

s1-s2=0
s3-s4=-1
s5-s6=1

關于“c語言如何進行字符串比較”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


網站欄目:c語言如何進行字符串比較
網站URL:http://www.xueling.net.cn/article/jgohoe.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 日韩欧美一区二区三区不学 | 91免费污视频 | 爱逼爱操 | 息与子五十路中文字幕 | 女人毛片免费观看 | 欧美一及黄色片 | 美景之屋3在线观看 | 日本婷婷 | 夜夜爽妓女8888视频免费 | 日本黄色一级片视频 | 一级毛片中文字幕 | 久久久久9999国产精品 | 亚洲精品高潮久久久久久久 | 亚洲最大无码中文字幕 | 欧美网站一区二区 | 亚洲成人网在线播放 | 中文字幕在线播放第一页 | 嫩草嫩草嫩草嫩草嫩草 | 少妇大叫太大太爽受不了在线观看 | 综合色综合 | 成人影院在线观看视频 | 91精品1区2区 | xxxxwwww欧美| 久久6热最新地址 | 四虎影视在线观看视频 | 国产精品伦理久久久久久 | 日本三级日本三级韩国三级视 | 男同gay18禁视频无码视频 | 亚洲一区二区制服在线 | 西西人体444WWW大胆无码视频 | 欧美成人a∨高清免费观看 伊人99 | 伊人春色视频 | 亚洲第一页在线 | 不卡大片 | 18禁污污网站国产 | 国产火热热av | 刺激cijilu福利区在线观看 | 国产一区在线观看麻豆 | h版欧美一区二区三区四区 麻豆精品蜜桃 | 999精品国产人妻无码系列 | 欧美视频亚洲色图 |