炽翼铁冰's Blog

Trying to become a programmer
const 与define的区别
在字符串中查找是否有重复字符(转)

匹配函数

炽翼铁冰 posted @ 2012年4月24日 15:08 in C(转载) , 3031 阅读
#include <stdio.h>
typedef int BOOL;
#define TRUE 1
#define FALSE 0

static const char MWILDCHAR = '*';
static const char SWILDCHAR = '?';
BOOL recmatch(const char* p, const char* s)
{

	char c;
	BOOL result;

	printf("test here\n");
	c = *(p++);
	printf("test here c=[%c]\n", c);
	if( c==0x00)
	{
		return *s == 0x0; //匹配空
	}
	if( c==SWILDCHAR)
	{
		return (*s!=0x0)? recmatch(p, s+1):FALSE;  //"?"模糊匹配(不包括空字符)
	}
	if( c==MWILDCHAR)  // "*"匹配所有字符
	{
		if(*p == 0)
			return TRUE;
		for( ; *s!=0x0;s++)
		{
			result = recmatch(p, s);
			if( result )
				return result;
		}
		return FALSE;
	}

	return (c==*s) ? recmatch(p, s+1):FALSE;
}

int main(void)
{
	char test1[]="abc*";
	char test2[]="abc";
	BOOL result= recmatch(test1, test2);
	printf("test1=[%s] test2=[%s] match result=[%d]\n", test1, test2, result);
}
Avatar_small
依云 说:
2012年4月24日 22:49

你怎么把 fnmatch 自己实现了一遍?

Avatar_small
炽翼铁冰 说:
2012年4月27日 02:56

@依云: 基础不好,研究下当作学习。见笑了..

Avatar_small
civaget 说:
2024年1月17日 21:53

I'm grateful for 오피타임's commitment to customer satisfaction.

Avatar_small
civaget 说:
2024年1月18日 05:09

제주출장마사지 - where stress melts away like magic.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter