日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

c语言如何进行字符串比较

發(fā)布時間:2023/12/15 综合教程 46 生活家
生活随笔 收集整理的這篇文章主要介紹了 c语言如何进行字符串比较 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

C語言是什么

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

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

本教程操作環(huán)境:windows7系統(tǒng)、c99版本、Dell G3電腦。

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

原型為:

intbcmp(constvoid*s1,constvoid*s2,intn);

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

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

bcmp() 函數(shù)不檢查NULL。

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

示例:

#include<stdio.h>
#include<string.h>
intmain()
{
char*s1="GoldenGlobalView";
char*s2="GoldenGlobalView";
if(!bcmp(s1,s2,7))
printf("s1equaltos2infirst7bytes");
else
printf("s1notequaltos2infirst7bytes");
return0;
}

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

其原型為:

intstrcmp(constchar*s1,constchar*s2);

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

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

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

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

示例:

#include<string.h>
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()--比較字符串(不區(qū)分大小寫)

原型為:

intstrcmp(char*s1,char*s2);

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

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

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

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

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

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

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

輸出:

Result:s1>s2

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

其原型為:

intstrncmp(constchar*str1,constchar*str2,size_tn);

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

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

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

【返回值】若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<stdio.h>
#include<string.h>
intmain(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));//是否區(qū)分大小寫
printf("s3-s4=%d\n",strncmp(s3,s4,100));//s3的長度小于s4
printf("s5-s6=%d\n",strncmp(s5,s6,100));//s5的長度大于s6
return0;
}

VC6.0下運行結果:

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

GCC下運行結果:

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

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

原型為:

intstrnicmp(constchar*str1,constchar*str2,size_tn);

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

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

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

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

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

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

#include<stdio.h>
#include<string.h>
intmain(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));//是否區(qū)分大小寫
printf("s3-s4=%d\n",strnicmp(s3,s4,100));//s3的長度小于s4
printf("s5-s6=%d\n",strnicmp(s5,s6,100));//s5的長度大于s6
return0;
}

VC6.0下運行結果:

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

GCC下運行結果:

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

總結

以上是生活随笔為你收集整理的c语言如何进行字符串比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。