编写字符串函数char *substr(char *str1, char *str2),判断字符串str2是否为str1的子串
自己编写了一段,不知道哪里错。希望在原来基础上改。//编写字符串函数char*substr(char*str1,char*str2),判断字符串str2是否为str1的子...
自己编写了一段,不知道哪里错。希望在原来基础上改。
//编写字符串函数char *substr(char *str1, char *str2),判断字符串str2是否为str1的子串,
//如果是,则返回str1中首次出现子串str2的起始位置,否则,返回NULL值。
//例如:str1=”I am a student”,str2=”stu”,函数执行后,返回值指向字符’s’,参数s1,s2不变。
#include<stdio.h>
void main()
{
char *substr(char *str1, char *str2);
char str1[80], str2[80];
char flag=0;
int i=0;
printf("输入str1\n");
gets(str1);
printf("输入str2\n");
gets(str2);
flag=substr(str1,str2);
printf("%d",flag);
if(flag=='a')
for(i=0;*(str1+i);i++)
printf("%c",*(str1+i));
else
printf("NULL");
}
char *substr(char *str1, char *str2)
{
int i=0,j=0,n=0,length=0;
char a=a;
for(n=0;*(str2+n);)
n++;
for(length=0;*(str1+length);)
length++;
for(i=0;i<length;i++)
{
if(*str2==*str1)
{
for(j=1;j<n;j++)
if(*(str2+j)==*(str1+j))
{
if(j+1==n)
{return a;
printf("yi fan hui\n");
break;break;}
else
continue;}}
else
break;
}
else
continue;
str1++;
}
return '\0';
} 展开
//编写字符串函数char *substr(char *str1, char *str2),判断字符串str2是否为str1的子串,
//如果是,则返回str1中首次出现子串str2的起始位置,否则,返回NULL值。
//例如:str1=”I am a student”,str2=”stu”,函数执行后,返回值指向字符’s’,参数s1,s2不变。
#include<stdio.h>
void main()
{
char *substr(char *str1, char *str2);
char str1[80], str2[80];
char flag=0;
int i=0;
printf("输入str1\n");
gets(str1);
printf("输入str2\n");
gets(str2);
flag=substr(str1,str2);
printf("%d",flag);
if(flag=='a')
for(i=0;*(str1+i);i++)
printf("%c",*(str1+i));
else
printf("NULL");
}
char *substr(char *str1, char *str2)
{
int i=0,j=0,n=0,length=0;
char a=a;
for(n=0;*(str2+n);)
n++;
for(length=0;*(str1+length);)
length++;
for(i=0;i<length;i++)
{
if(*str2==*str1)
{
for(j=1;j<n;j++)
if(*(str2+j)==*(str1+j))
{
if(j+1==n)
{return a;
printf("yi fan hui\n");
break;break;}
else
continue;}}
else
break;
}
else
continue;
str1++;
}
return '\0';
} 展开
2个回答
展开全部
放弃修改你的程序了,改的功夫,可以写5个类似的程序了
应你的要求,修改如下
#include<stdio.h>
char *substr(char *str1, char *str2);
void main()
{
char str1[80], str2[80];
char* flag=NULL;
int i=0;
printf("输入str1\n");
gets(str1);
printf("输入str2\n");
gets(str2);
flag=substr(str1,str2);
printf("%d\n",flag - str1);
if(flag!=NULL)
printf("%s",flag);
else
printf("NULL");
}
char *substr(char *str1, char *str2)
{
char * p = str1;
while(*p)
{
if(memcmp(p,str2, strlen(str2)) == 0)
return p;
p++;
}
return NULL;
}
应你的要求,修改如下
#include<stdio.h>
char *substr(char *str1, char *str2);
void main()
{
char str1[80], str2[80];
char* flag=NULL;
int i=0;
printf("输入str1\n");
gets(str1);
printf("输入str2\n");
gets(str2);
flag=substr(str1,str2);
printf("%d\n",flag - str1);
if(flag!=NULL)
printf("%s",flag);
else
printf("NULL");
}
char *substr(char *str1, char *str2)
{
char * p = str1;
while(*p)
{
if(memcmp(p,str2, strlen(str2)) == 0)
return p;
p++;
}
return NULL;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
char *substr(char *str1, char *str2);
void main()
{
char str1[80], str2[80];
char* flag=NULL;
int i=0;
printf("输入str1\n");
gets(str1);
printf("输入str2\n");
gets(str2);
flag=substr(str1,str2);
printf("%d\n",flag - str1);
if(flag!=NULL)
printf("%s",flag);
else
printf("NULL");
}
char *substr(char *str1, char *str2)
{
char * p = str1;
while(*p)
{
if(memcmp(p,str2, strlen(str2)) == 0)
return p;
p++;
}
return NULL;
}
char *substr(char *str1, char *str2);
void main()
{
char str1[80], str2[80];
char* flag=NULL;
int i=0;
printf("输入str1\n");
gets(str1);
printf("输入str2\n");
gets(str2);
flag=substr(str1,str2);
printf("%d\n",flag - str1);
if(flag!=NULL)
printf("%s",flag);
else
printf("NULL");
}
char *substr(char *str1, char *str2)
{
char * p = str1;
while(*p)
{
if(memcmp(p,str2, strlen(str2)) == 0)
return p;
p++;
}
return NULL;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询