hnust oj实验题--查找子串

题目描述

本题要求实现一个字符串查找的简单函数。

函数接口定义:

char *search( char *s, char *t );

函数search在字符串s中查找子串t,返回子串t在s中的首地址。若未找到,则返回NULL。

裁判测试程序样例:

#include <stdio.h>
#define MAXS 30

char *search(char *s, char *t);
void ReadString( char s[] ); /* 裁判提供,细节不表 */

int main()
{
    char s[MAXS], t[MAXS], *pos;

    ReadString(s);
    ReadString(t);
    pos = search(s, t);
    if ( pos != NULL )
        printf("%d\n", pos - s);
    else
        printf("-1\n");

    return 0;
}

/* 你的代码将被嵌在这里 */
输入

由题目自动完成

输出

由题目自动完成

样例输入 Copy
The C Programming Language
ram
样例输出 Copy
10


//查找子串,如果有多个,放回地址最小的

#include <stdio.h>
#define MAXS 30


char *search( char *s, char *t ){
	char *pos = t;//拿来比对的字符串
	int flag = 0;
	char *temp = NULL;//拿来返回地址的
	while(*s != '\0'){
		pos = t;//每次都要初始化pos,因为后面需要变化他的地址
		if(*s == *pos){//遇到首字符相等的情况,开始判断
			temp = s;//先记住子串出现的首字符位置
			while(*pos != '\0'){//判断整个子串是否相等
				if(*s != *pos){
					flag = 0;//不相等,则说明不是子串
					break;//跳出这层循环,进行下一次判断
				}else{
					s++;pos++;//遍历整个子串
					flag = 1;
				}
			}
			if(flag == 1){
				return temp;//标记为1,说明是子串,直接返回
			}
		}else{
			s++;//与子串的首字符不相等,遍历s
		}
		
	}
	if(flag == 0){
		return NULL;//未找到含有子串的地方,返回NULL
	}
}

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值