char a[100] = {0};a数组中的内容是从终端上输入的,char b[50] = “hello“;在a对应的字符串口,查找b字符串,如果找到了b 字符串将a中这个b字符串的首地址返回。

#include <stdio.h>

int strlen(char *src)
{
	int ret = 0;

	if(src == NULL){
		printf("args error\n");
		return -1;
	}
	//hello'\0'
	while(src[ret])ret++;

	return ret;
}

char *strstr(char *src,char *sub)
{
	char *p = src,*q = sub;

	if(src == NULL || sub == NULL){
		printf("please check args\n");
		return NULL;
	}
	
	if(strlen(src)<strlen(sub)) return NULL;
	
	while(*src){
	//	p = src;
		q = sub;
		
		while(*p && *q && *p++ == *q++);
		if(*(--p) == *(--q) && *(++q) == '\0')return src;	
		
		p = ++src;
	}
	
	return NULL;
}

int main(int argc, const char *argv[])
{
	char *retval;
	char a[100] = {0};//"hello world"
	char b[50]  = {0};//"hello"

	printf("please input a[100] > ");
	scanf("%[^\n]",a);
	getchar();
	printf("please input b[50] > ");
	scanf("%[^\n]",b);

	retval = strstr(a,b);
	if(retval == NULL){
		printf("no found sub string\n");
		return -1;
	}

	printf("retval = %s\n",retval);

	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值