我這里運(yùn)行,沒(méi)有運(yùn)行時(shí)錯(cuò)誤,只是按你的代碼結(jié)果不對(duì)。
創(chuàng)新互聯(lián)長(zhǎng)期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為靜海企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),靜海網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
調(diào)整后代碼如下:
#include?stdio.h
#include?string.h
char?*strstr(char*str1,char*str2)
{
int?n1?=?strlen(str1);
int?n2?=?strlen(str2);
int?flg?=?0;
char?*p1?=?str1;
char?*p2?=?str2;
if(n1n2)?return?NULL;
int?i;
for(i=0;in1-n2+1;i++)
{
p1?=?str1+i;
p2?=?str2;
while(*p2!=NULL)//
{
if(*p1!=*p2)?
{
flg?=?0;
p1++;
p2++;
break;
}
p1++;
p2++;
flg?=?1;????????????????
}
if(flg)?return?str1+i;//你到底要輸出什么,原函數(shù)是輸出位置int
}
return?NULL;//
}
int?main()
{
char?str1[]="str1adsfqwer";
char?str2[]="ads";
char?*p?=?strstr(str1,str2);
printf("%s\n",p);
return?0;
}
1、puts函數(shù)——輸出字符串的函數(shù)
一般的形式為puts(字符串組)
作用:將一個(gè)字符串輸出到終端。如,char一個(gè)string,并賦予初值。調(diào)用puts(string);進(jìn)行字符串的輸出。
2、gets函數(shù)——輸入字符串的函數(shù)
一般的形式:gets(字符數(shù)組)
作用:從終端輸入一個(gè)字符串到字符數(shù)組,并且得到一個(gè)函數(shù)值成為字符數(shù)組的起始地址。
gets(str);
鍵盤(pán)輸入,,,,你懂得。
注意:puts和gets函數(shù)只能輸出或者輸入一個(gè)字符串。
3、strcat函數(shù)——字符串連接函數(shù)
一般的形式:strcat(字符數(shù)組1,字符數(shù)組2);
作用:把兩個(gè)字符串?dāng)?shù)組中字符串連接起來(lái),把字符串2連接到字符串1的后面。
說(shuō)明:字符數(shù)組1必須足夠大,以便容納連接后的新字符串。
4、strcpy/strncpy函數(shù)——字符串復(fù)制函數(shù)
一般形式:strcpy(字符數(shù)組1,字符串2);
作用:將字符串2復(fù)制到字符數(shù)組1中去。
如:char str1[10],str2[]="DongTeng";
strcpy(str1,str2);
執(zhí)行后的結(jié)果為:你懂得
注意:
1. 不能用賦值語(yǔ)句直接將一個(gè)字符串常量或者字符數(shù)組直接給一個(gè)字符數(shù)組。
2. 用strncpy可以賦值指定的位置的字符。strncpy(str1,str2,3);將str2中的第3個(gè)字符復(fù)制到str1中。
5、strcmp函數(shù)——字符串比較函數(shù)
一般形式:strcmp(字符串1,字符串2);
作用:用來(lái)比較兩個(gè)字符串的差異。具有不同的比較規(guī)則。
6、strlen函數(shù)——測(cè)字符串長(zhǎng)度的函數(shù)
一般形式:strlen(字符數(shù)組);
如:char str[10]="DongTeng";
printf("%d",strlen(str));
得到的結(jié)果是:5
7、strlwr函數(shù)——轉(zhuǎn)換為小寫(xiě)的函數(shù)
一般形式:strlwr(字符串);
8、strupr函數(shù)——轉(zhuǎn)換為大寫(xiě)的函數(shù)
一般形式:strupr(字符串)。
#include?stdio.h
const?char?key[][12]?=?{?"happy",?"new",?"year",?"2014"?};
//?是否完全匹配某一個(gè)特定的?key?
int?match1(const?char?*s,?const?char?*t)
{
while?(*s??*t??*s++?==?*t++);
return?!(*s?||?*t);
}
//?是否匹配一組?key?的中一個(gè)?
int?match(const?char?*s)
{
int?i,?j;
for?(i?=?0;?i??sizeof?key?/?sizeof?key[0];?i++)
if?(match1(s,?key[i]))
{
//?如果匹配到某個(gè)?key,則打印匹配到的?key?
for?(j?=?0;?key[i][j];?j++)??putchar(key[i][j]);
putchar('\n');
return?1;
}
return?0;
}
int?main()
{
char?s[BUFSIZ];
int?i,?k;
//?輸入一個(gè)字符串
for?(i?=?0;?i??BUFSIZ??(s[i]?=?getchar())?!=?'\n';?i++);
s[i]?=?'\0';
match(s);
return?0;
}
以上程序是判斷輸入的字符串是否是某個(gè) key 中的一個(gè)。
如果不要求完全匹配,而是要求檢測(cè)輸入的字符串是否含有某個(gè) key,則程序如下:
#include?stdio.h
const?char?key[][12]?=?{?"happy",?"new",?"year",?"2014"?};
//?是否含有某一個(gè)特定的?key?
int?match1(const?char?*s,?const?char?*t)
{
const?char?*p,?*q,?*r;
for?(p?=?s,?q?=?t;?*p??*q;?p?=?r,?q?=?t)
{
for?(r?=?p?+?1;?*p?==?*q;?p++,?q++);
if?(*q?==?'\0')?return?1;
if?(*p?==?'\0')?return?0;
}
return?0;
}
//?是否含有一組?key?的中一個(gè)?
int?match(const?char?*s)
{
int?i,?j;
for?(i?=?0;?i??sizeof?key?/?sizeof?key[0];?i++)
if?(match1(s,?key[i]))
{
//?如果匹配到某個(gè)?key,則打印匹配到的?key?
for?(j?=?0;?key[i][j];?j++)??putchar(key[i][j]);
putchar('\n');
return?1;
}
return?0;
}
int?main()
{
char?s[BUFSIZ];
int?i,?k;
//?輸入一個(gè)字符串
for?(i?=?0;?i??BUFSIZ??(s[i]?=?getchar())?!=?'\n';?i++);
s[i]?=?'\0';
if?(match(s))
{
//?如果匹配到某個(gè)?key,則打印輸入的原始字符串?
for?(k?=?0;?k??i;?k++)?putchar(s[k]);
putchar('\n');
}
return?0;
}
本文題目:c語(yǔ)言匹配字符串函數(shù),字符串模式匹配算法C語(yǔ)言
網(wǎng)站網(wǎng)址:http://sd-ha.com/article2/hdhcic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、服務(wù)器托管、企業(yè)網(wǎng)站制作、微信公眾號(hào)、做網(wǎng)站、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)