
正文
c语言match函数 c++ match
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言,输入一个字符串和一个字符,就从该字符最后出现的位置输出字符串中的字符否则返回空指针NULL
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);
}
相关问答
Q1: C语言问题。求改错,不是要da'an
自己看注释吧。c语言match函数你那个函数实在应该改进c语言match函数,但c语言match函数你不让,只让改错……
int main(void){
char str[MAXS], ch_start, ch_end, *p;
//scanf("%s\n", str);
scanf("%s", str);//删除\n
//scanf("%c %c", ch_start, ch_end);
scanf(" %c %c", ch_start, ch_end);//第一个%前也得加一个空格
p = match(str, ch_start, ch_end);
printf("%s\n", p);
return 0;
}
char *match( char *s, char ch1, char ch2 )
{
int i,j,k,b;
b=strlen(s);
char *a;
a=s;
for(i=0;i=b;i++)
{
if(a[i]==ch1) break;
}
//if(i=b)
if(i==b)//改成==
{
if(a[i]==ch1)
{
//printf("%s",a[i]);
printf("%s",a+i);//改成这样
return a[i];
}
else
{
printf("\n");
return 0;
}
}
if(ib)
{
for(j=i+1;j=b;j++)
{
if(a[j]==ch2) break;
}
for(k=i;k=j;k++)
{
//printf("%s",a[k]);
printf("%c",a[k]);//改成这样
}
printf("\n");//加上这一句
//return a[i];//这一句改到下面c语言match函数的}后面
}
return a[i];
}
Q2: C语言指针
#include stdio.h
char *match(char *s, char ch) /* 函数返回值c语言match函数的类型是字符指针 */
{
while(*s != '\0')
if(*s == ch)
return(s); /* 若在字符串s中找到字符chc语言match函数,返回相应的地址 */
else
s++;
return(NULL); /* 在s中没有找到chc语言match函数,返回空指针 */
}
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;
}
Q3: C语言指针问题
同学c语言match函数,你想填个限制条件c语言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,愿上帝保佑你~~~
Q4: C语言指针函数
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前的*为什么就不对了。
另外,括号里参数类型(如包含指针)跟函数返回值的类型无关。函数名前加不加*只与函数返回值的类型有关。
关于c语言match函数和c++ match的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







