黄岐网站制作/如何查询百度收录
习题11-6 查找子串
- 原理:怎么用指针找?
- 1.指针减指针等于什么?
- 效果:返回了7
- 2. 查找子串:
- 结果:
本题要求实现一个字符串查找的简单函数。
char *search( char *s, char *t );//函数接口定义:
原理:怎么用指针找?
注意:
函数前面的数据类型作用:
int sum(){} // return 值; 就是int 数据类型
void sum(){} //没有数据类型,就没有return 语句
char *search(){} //数据类型是指针,返回return 就是
地址(指针就是地址)
指针地址字符串:
这个字符串:每个字符的地址是如何分配的?
1.指针减指针等于什么?
指针的运算:
p2=p1+7;
printf("%d",p2-p1); //指针相减p2是p1+7,p2-p1就是7
#include<stdio.h>int main(){char *pow;char name[]="hello world do you?";char *p1;char *p2=NULL;p1=name;p2=p1+7; printf("%p\n",p1);printf("%p\n",p1+1); printf("%p\n",p2); printf("%d",p2-p1); //指针相减p2是p1+7,p2-p1就是7 return 0;}
效果:返回了7
2. 查找子串:
#include<stdio.h>
#include<string.h>char *search( char *s, char *t ){char *pow=NULL; int b=1;printf("执行一次\n"); //printf("%s_________%s",s,t);// 使用指针直接t不用*号 //printf("%c",s[0]); // 这里的s[0]相当于min[0] 一个字符for(int i=0;s[i]!='\0';i++){if(s[i]==t[0]){for(int j=1;t[j]!='\0';j++){if( s[i+j]==t[j] ) //这里循环, b++; //如果查找到,这个b值等于t的字符个数 //break;//这个的作用: }}if(b==strlen(t)){//b=i+1;pow=s+i+1;break;} else{pow=s-1;break;} }return pow; }int main(){char min[50];char c[20];char *p1;char *p2;char *kon; p1=min;p2=c;gets(min);////printf("\n");scanf("%s",c);kon=search(p1,p2);printf("%d",kon-p1); //这里p1是字符串的首地址, return 0;
}
结果:
成功返回:子串在字符串中的第一个字符位置
返回了:17.
不成功:返回-1;