十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#include stdio.h
宁国网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。成都创新互联于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
char *match(char *s, char ch) /* 函数返回值的类型是字符指针 */
{
while(*s != '\0')
if(*s == ch)
return(s); /* 若在字符串s中找到字符ch,返回相应的地址 */
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) /* 调用函数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)
函数各部分的含义:
第一个char,一般是代表函数的返回值是一个字符。但是它后面有一个*,应该把char和*连起来看,就是char*了。
那么,第一个就是char*,代表函数的返回值是一个字符指针(地址)。
match是函数的名字。
括号内是函数的参数,多个参数用逗号分隔。本例共有3个参数:char*s,char ch1,char ch2,第一个是s,类型为char*型(字符指针型),后两个ch1、ch2都是char型(字符型)。
到这儿,你就知道去掉*match前的*为什么就不对了。
另外,括号里参数类型(如包含指针)跟函数返回值的类型无关。函数名前加不加*只与函数返回值的类型有关。
同学,你想填个限制条件,应该可以想到 if 一下,就可以了啊、、
if( match(arr) ) // match函数,如果 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;
}
你可能发现上面的代码太呆板了,如果,我们想输出,以.txt为后缀的呢?、以.abc为后缀的呢?、于是,我们很容易,想到编写一个更通用的函数
int match(char *s, char *t); //如果,s 以 t为后缀,则返回1,否则返回0
给出一个实现:
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标准库里面,已经有个函数了,也就是根本不用我们再去编写match函数了,(至于是哪个函数,你翻下书吧,每一本关于c的书,都该简单介绍标准库)
是不是我偏离话题了,my god,愿上帝保佑你~~~
match函数修改如下。
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
然后在程序中就可以使用数学函数了
例如:pow(); sin(); fabs(); log(); 等等