字符串中子串的查找 -- C语言

思路

使用两个循环,外循环遍历主串,内循环遍历查找串,主串一个字符一个字符的后移,分别和查找串进行批评,找到了就返回

 

代码实现

char * mystrstr(char * str, char * sub){
	if(NULL == str || NULL == sub){
		printf("mystrstr param error\n");
		return NULL;
	}

	char * p = NULL, * q = NULL, * c = NULL;
	int found = 0;

	p = str;
	while(*p != '\0'){

		q = sub;
		c = p;
		while(*c == *q && *q != '\0'){
			q++;
			c++;
		}

		if('\0' == *q){
			found = 1;
			break;			
		}
		p++;
	}

	if(1 == found){
		return p;
	} else {
		return NULL;
	}
}


void testmystrstr(void){
	char * str1 = "12345";
	char * str2 = "45";
	char * str3 = "23";
	char * str4 = "25";
	char * r = NULL;

	printf("\n************  testmystrstr ************ \n");

	r = mystrstr(str1, str2);
	if(NULL != r){
		printf("substr: %s\n", r);
	} else {
		printf("can not find sub: %s\n", str2);
	}
	

	r = mystrstr(str1, str3);
	if(NULL != r){
		printf("substr: %s\n", r);
	} else {
		printf("can not find sub: %s\n", str3);
	}

	r = mystrstr(str1, str4);
	if(NULL != r){
		printf("substr: %s\n", r);
	} else {
		printf("can not find sub: %s\n", str4);
	}	

	return;
}

 

代码编译

gcc main.c str.c -g -o a.exe

 

调试输出

************  testmystrstr ************
substr: 45
substr: 2345
can not find sub: 25

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值