#include stdio.h
寧國網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
char *match(char *s, char ch) /* 函數(shù)返回值的類型是字符指針 */
{
while(*s != '\0')
if(*s == ch)
return(s); /* 若在字符串s中找到字符ch,返回相應(yīng)的地址 */
else
s++;
return(NULL); /* 在s中沒有找到ch,返回空指針 */
}
int main(void )
{
char ch, str[80], *p= NULL;
char ch2 = 0;
char *p2 = NULL;
int i = 0;
printf("Please Input the string:\n"); /* 提示輸入字符串 */
scanf("%s", str);
getchar(); /* 跳過輸入字符串和輸入字符之間的分隔符 */
ch = getchar(); /* 輸入一個字符 */
getchar();
ch2 = getchar();/* 輸入第二個字符 */
if((p = match(str, ch)) != NULL) /* 調(diào)用函數(shù)match() */
{
if((p2 = match(p+1, ch2)) != NULL)
{
for (i = 0; i = p2 - p; i++)
{
printf("%c", p[i]);
}
printf("\n");
}
else
printf("Second character Not Found\n");
}
else
printf("First character Not Found\n");
return 0;
}
char *match (char*s,char ch1,char ch2)
函數(shù)各部分的含義:
第一個char,一般是代表函數(shù)的返回值是一個字符。但是它后面有一個*,應(yīng)該把char和*連起來看,就是char*了。
那么,第一個就是char*,代表函數(shù)的返回值是一個字符指針(地址)。
match是函數(shù)的名字。
括號內(nèi)是函數(shù)的參數(shù),多個參數(shù)用逗號分隔。本例共有3個參數(shù):char*s,char ch1,char ch2,第一個是s,類型為char*型(字符指針型),后兩個ch1、ch2都是char型(字符型)。
到這兒,你就知道去掉*match前的*為什么就不對了。
另外,括號里參數(shù)類型(如包含指針)跟函數(shù)返回值的類型無關(guān)。函數(shù)名前加不加*只與函數(shù)返回值的類型有關(guān)。
同學(xué),你想填個限制條件,應(yīng)該可以想到 if 一下,就可以了啊、、
if( match(arr) ) // match函數(shù),如果 arr 以 .jpg為后綴,返回 1,否則返回 0
fputs(arr, stdout);
下面就是match()怎么編寫的問題了,我給出一個吧:
int match(char * s)
{
char * t = s;
while(*t++); // 將 t 移到字符串尾(實際上是字符串尾的一下個位置)
t -= 5; // 倒退 5 個位置
if(t =s *t =='.' *(t+1) == 'j' *(t+2) == 'p' *(t+3) == 'g')
return 1;
else
return 0;
}
你可能發(fā)現(xiàn)上面的代碼太呆板了,如果,我們想輸出,以.txt為后綴的呢?、以.abc為后綴的呢?、于是,我們很容易,想到編寫一個更通用的函數(shù)
int match(char *s, char *t); //如果,s 以 t為后綴,則返回1,否則返回0
給出一個實現(xiàn):
int match(char * s, char *t)
{
char * p = s;
while(*p++); // 將 p 移到字符串尾(實際上是字符串尾的一下個位置)
p -= strlen(t) + 1; // 倒退 若干 個位置
if(p =s !strcmp( p, t)) // 后面匹配
return 1;
else
return 0;
}
寫到這里,你可能會高興,但悲劇是,c標(biāo)準(zhǔn)庫里面,已經(jīng)有個函數(shù)了,也就是根本不用我們再去編寫match函數(shù)了,(至于是哪個函數(shù),你翻下書吧,每一本關(guān)于c的書,都該簡單介紹標(biāo)準(zhǔn)庫)
是不是我偏離話題了,my god,愿上帝保佑你~~~
match函數(shù)修改如下。
char?*match(?char?*s,?char?ch?)
{
char?*k?=?NULL;
while(?*s?!=?'\0'?)
{
if(?*s?==?ch?)
k?=?s;
s++;
}
if(?k?!=?NULL?)
return(k);
return?(NULL);?
}
#includestdio.h
#includestring.h
int?main()
{
int?flag;
char?a[30]="iamtired";
char?b[100];
scanf("%s",b);
if(?strstr(?b?,?a?)?)
flag=1;
else
flag=0;
printf("flag=%d\n",?flag?);
return?0;
}
在c語言中是一個頭文件的名字
用法是#includematch.h
然后在程序中就可以使用數(shù)學(xué)函數(shù)了
例如:pow(); sin(); fabs(); log(); 等等