|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- char*string_in(char*,char*); //接受两个参数,若第二个参数包含在第一个字符串内,则返回被包含的字符串开始的地址 ,否则返回空指针
- int main(void)
- {
- char s1[40],s2[20]; //定义s1为第一个参数,s2为第二个参数
- char*pc;
- do
- {
- puts("enter first string!");
- gets(s1);
- puts("enter second string!");
- gets(s2);
- pc=string_in(s1,s2); //定义一个pc指针,将string_in函数赋值给 pc
- if(pc) puts(pc);
- else puts("can't find!");
- puts("continue,Y or N?");
- gets(pc);
- }while (*pc=='Y'); //输入Y进行循环
- puts("END!");
- return 0;
- }
- char*string_in(char*s1,char*s2)
- {
- char*p1=s1;char*p2=s2; //将S1的地址赋值给P1,S2的地址赋值给P2
- if(*s1=='\0'||*s2=='\0') return NULL; //若字符串第一个字符为空字符,则返回空指针
- while(1)
- {
- if(*s1==*s2) //两个字符串字符是否相等
- {
- if(*(++s2)=='\0') return p1; //若字符串S2的下一个字符为空字符,返回指针P1
- if(*(++s1)=='\0') return NULL; //若字符串S1的下一个字符为空字符,返回空指针
- }
- else
- {if(s1==s1[0]) //检查两个字符串的第一个字符 是否相等 例如 S1="ABC",S2="BC"
- {
- if(*++s1=='\0') return NULL;
- }
- else
- {
- if(*++s1=='\0') return NULL; //检测S1的下个字符是否为空字符,若是返回空指针
- s1--;
- }
- p1=s1;
- s2=p2;
- }
- }
- }
复制代码
感觉自己写的是对的,也试过,可是输入ABC,BC; 输入AABC,ABC;这几个字符串却执行不了,求大神讲解。。 |
|