??前言:
上一篇文章C語(yǔ)言——字符函數(shù)和字符串函數(shù)(一)對(duì)字符函數(shù)和字符串函數(shù)strlen
,strcpy
和strncpy
,strcat
和strncat
進(jìn)行了初步的講解
這篇文章主要再講解幾個(gè)我們常用到的其他字符串函數(shù)(附上實(shí)例):
1,strcmp和strncmp
2,strstr
??個(gè)人簡(jiǎn)介:努力學(xué)習(xí)ing
??個(gè)人專欄:C語(yǔ)言入門基礎(chǔ)
??CSDN主頁(yè) 愚潤(rùn)求學(xué)
??每日雞湯:夜色難免黑涼,前行必有曙光
一,strcmp和strncmp
頭文件:<string.h>
功能:逐個(gè)比較字符串中的字符
1,strcmp
我們先看一下對(duì)strcmp
的介紹????
?對(duì)重要的內(nèi)容解讀一下與數(shù)理:
●功能(執(zhí)行過(guò)程):
1,從每個(gè)字符串的第一個(gè)字符開始依次進(jìn)行字符的對(duì)應(yīng)比較
2,如果字符相等,則進(jìn)行下一個(gè)字符的比較
●返回值:
1,兩個(gè)字符串的內(nèi)容完全相同時(shí),返回0
2,當(dāng)出現(xiàn)對(duì)應(yīng)字符不相等時(shí):
若str1中的字符(ASCII值)> str2中的字符,返回>0的數(shù)字
若str1中的字符(ASCII值)> str2中的字符,返回<0的數(shù)字
下面請(qǐng)看使用的例子????
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abcd";
char arr2[] = "abcd";
char arr3[] = "abc";
char arr4[] = "abd";
printf("%d\n", strcmp(arr1, arr2));
printf("%d\n", strcmp(arr1, arr3));
printf("%d\n", strcmp(arr1, arr4));
return 0;
}
我們讓arr1
分別與 arr2
,arr3
,arr4
進(jìn)行比較
依據(jù)我們上面的學(xué)習(xí),我們可以做出一下判斷:
1,arr1
和arr2
完全相同,所以應(yīng)該返回0
2,arr1
和arr3
相比,前3個(gè)字符相同,第四個(gè)字符‘d’>‘\0’,所以應(yīng)該返回一個(gè)>0
的數(shù)字
3,arr1
和arr4
相比,前2個(gè)字符ab相同,但是,第三個(gè)字符‘c’<‘d’,所以返回一個(gè)<0
的數(shù)字
來(lái)看輸出結(jié)果??
和我們預(yù)料的一樣
2,strncmp
可以觀察到參數(shù)多了一個(gè)size_t num
,這個(gè)表示的是比較的字符的個(gè)數(shù)
對(duì)兩個(gè)字符串的前num個(gè)字符進(jìn)行比較,比較的規(guī)則如同strcmp
我們借助strcmp中的例子,來(lái)使用一下strncmp,比較字符串的前三個(gè)字符????
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abcd";
char arr2[] = "abcd";
char arr3[] = "abc";
char arr4[] = "abd";
printf("%d\n", strncmp(arr1, arr2,3));
printf("%d\n", strncmp(arr1, arr3,3));
printf("%d\n", strncmp(arr1, arr4,3));
return 0;
}
輸出結(jié)果??
arr1
與arr3
比較,因?yàn)橹槐容^前三個(gè)字符,所以不進(jìn)行第四個(gè)字符的比較,前三個(gè)字符完全相同,則返回0
二,strstr
strstr的功能是:在字符串str1
中找字符串str2
????
?對(duì)重要的內(nèi)容解讀一下與數(shù)理:
●功能(執(zhí)行過(guò)程):
1,在str1
中找str2
2,若找到了,則返回str2
在str1
中第一次出現(xiàn)的位置(地址)
3,若沒(méi)找到,則返回空指針
●注意:
1,字符串的比較匹配不包含\0
,以\0
為結(jié)束標(biāo)志(也就是說(shuō)在str1
中遇到\0
就會(huì)停止查找)
請(qǐng)看使用實(shí)例????
#include<stdio.h>
#include<string.h>
int main()
{
char str1[] = "abcdabcd";
char str2[] = "abc\0dabcd";
char str[] = "bcd";
//在str1里面找str
if (strstr(str1, str) == NULL)
printf("沒(méi)找到\n");
else
printf("%s\n", strstr(str1, str));
//在str2里面找str
if (strstr(str2, str) == NULL)
printf("沒(méi)找到\n");
else
printf("%s\n", strstr(str2, str));
return 0;
}
輸出結(jié)果??
可見(jiàn),在str1
中找到了,并且返回了第一次找到時(shí)的地址,所以才從第一個(gè)b
的位置開始打印
在str2
中最后也有bcd
,但是因?yàn)樵谇懊嬗龅搅?code>\0所以停止了查找,且在停止前未找到,所以返回NULL
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-765225.html
??我的分享也就到此結(jié)束啦??
要是我的分享也能對(duì)你的學(xué)習(xí)起到幫助,那簡(jiǎn)直是太酷啦!
若有不足,還請(qǐng)大家多多指正,我們一起學(xué)習(xí)交流!
??公主,王子:點(diǎn)贊??→收藏?→關(guān)注??
感謝大家的觀看和支持!祝大家都能得償所愿,天天開心?。?!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-765225.html
到了這里,關(guān)于C語(yǔ)言——字符函數(shù)和字符串函數(shù)(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!