⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 match.c

📁 MTOOLS version 2.0 Mtools is a public domain collection of programs to allow Unix systems t
💻 C
字号:
/* * Do shell-style pattern matching for '?', '\', '[..]', and '*' wildcards. * Returns 1 if match, 0 if not. */#include <stdio.h>intmatch(s, p)char *s, *p;{	int matched, reverse;	char first, last;	for (; *p != '\0'; s++, p++) {		switch (*p) {			case '?':	/* match any one character */				if (*s == '\0')					return(0);				break;			case '*':	/* match everything */				while (*p == '*')					p++;					/* if last char in pattern */				if (*p == '\0')					return(1);					/* search for next char in pattern */				matched = 0;				while (*s != '\0') {					if (*s == *p) {						matched = 1;						break;					}					s++;				}				if (!matched)					return(0);				break;			case '[':	 /* match range of characters */				first = '\0';				matched = 0;				reverse = 0;				while (*++p != ']') {					if (*p == '^') {						reverse = 1;						p++;					}					first = *p;					if (first == ']' || first == '\0')						return(0);					/* if 2nd char is '-' */					if (*(p + 1) == '-') {						p++;					/* set last to 3rd char ... */						last = *++p;						if (last == ']' || last == '\0')							return(0);					/* test the range of values */						if (*s >= first && *s <= last) {							matched = 1;							p++;							break;						}						return(0);					}					if (*s == *p)						matched = 1;				}				if (matched && reverse)					return(0);				if (!matched)					return(0);				break;			case '\\':	/* Literal match with next character */				p++;				/* fall thru */			default:				if (*s != *p)					return(0);				break;		}	}					/* string ended prematurely ? */	if (*s != '\0')		return(0);	else		return(1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -