c语言,输入两个字符串,判断后一个是不是前一个的子串
答案:3 悬赏:80 手机版
解决时间 2021-03-11 22:40
- 提问者网友:夢醒日落
- 2021-03-11 03:55
要用指针,尽量详细点,最好有重要步骤的解释,麻烦各位大神了
最佳答案
- 五星知识达人网友:纵马山川剑自提
- 2021-03-11 05:27
int judge(char first[],char second[]) {//两个字符串首地址的形参
char *f=first,*s=second;//由于数组地址不能被赋值,所以声明两个指针来指向数组首地址
while(*f!='\0') {//循环运行到第一个字符串的末尾结束
char *temp=f;//新定义一个指针,这样做操作的时候不会改变f指针
if(*temp==*s) {//判断第一个数组中的字符是否等于第二个数组中的字符,如果是进行以下操作
while(*s!='\0') {//以下循环判断第一个数组中字符是否跟第二个数组中字符完全相同
temp++;
if(*temp='\0') retuen 0;//第一个数组中剩余字符不够了,所以不是子串
s++;
if(*temp!=*s) {
s=second;//如果第二个数组中有一个字符跟第一个数组中不一样,则重置S指针
}
}
if(s!=second) return 1;//第二个数组中字符全部跟第一个数组中一样,所以是子串
}
f++;
}
return 0;//循环结束还没得到是子串的结论,所以不是子串
}
函数写好了,放在main里面调用就行了
char *f=first,*s=second;//由于数组地址不能被赋值,所以声明两个指针来指向数组首地址
while(*f!='\0') {//循环运行到第一个字符串的末尾结束
char *temp=f;//新定义一个指针,这样做操作的时候不会改变f指针
if(*temp==*s) {//判断第一个数组中的字符是否等于第二个数组中的字符,如果是进行以下操作
while(*s!='\0') {//以下循环判断第一个数组中字符是否跟第二个数组中字符完全相同
temp++;
if(*temp='\0') retuen 0;//第一个数组中剩余字符不够了,所以不是子串
s++;
if(*temp!=*s) {
s=second;//如果第二个数组中有一个字符跟第一个数组中不一样,则重置S指针
}
}
if(s!=second) return 1;//第二个数组中字符全部跟第一个数组中一样,所以是子串
}
f++;
}
return 0;//循环结束还没得到是子串的结论,所以不是子串
}
函数写好了,放在main里面调用就行了
全部回答
- 1楼网友:长青诗
- 2021-03-11 07:04
#include
int fa(char *str1,char *str2)
{
char *p1=str1;
char *p2=str2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1==*p2)
{
p1++;
p2++;
}
else
{
return 0;
}
}
if(*p1=='\0' && *p2=='\0')
{
return 1;
}
return 0;
}
int fb(char *str1,char *str2)
{
char *p1=str1;
while(*p1!='\0')
{
if(fa(p1,str2))
{
return 1;
}
else
{
p1++;
}
}
return 0;
}
void main()
{
char *str1="asdfasf";
char *str2="sdf";
if(fb(str1,str2)) printf("match");
else printf("not match");
}
- 2楼网友:撞了怀
- 2021-03-11 05:44
#include
int isstr(const char *source,const char *dest)
{
int i=0,j,k;
while(source[i]!='\0')
{
k=i;j=0;
while(source[k]!='\0'&&dest[j]!='\0'&&source[k]==dest[j])
k++,j++;
if (dest[j]=='\0')
return 1;
if (source[k]=='\0')
return 0;
i++;
}
return 0;
}
int main()
{
char data[] = "ni hao";
char data1[] ="hao";
printf("%d\n",isstr(data,data1));
return 0;
}
程序如上,关键函数就是
int isstr(const char *source,const char *dest)
判断dest字符串是否是source的子串。
是,返回1,否则返回0.
有问题可以空间留言,或hi我。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯