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

📄 milstr.cpp

📁 MONA是为数不多的C++语言编写的一个很小的操作系统
💻 CPP
字号:
#include	"compiler.h"// ---- ANK#if defined(SUPPORT_ANK)int milank_cmp(const char *str, const char *cmp) {	int		s;	int		c;	do {		s = (UINT8)*str++;		if (((s - 'a') & 0xff) < 26) {			s -= 0x20;		}		c = (UINT8)*cmp++;		if (((c - 'a') & 0xff) < 26) {			c -= 0x20;		}		if (s != c) {			return((s > c)?1:-1);		}	} while(s);	return(0);}int milank_memcmp(const char *str, const char *cmp) {	int		s;	int		c;	do {		c = (UINT8)*cmp++;		if (c == 0) {			return(0);		}		if (((c - 'a') & 0xff) < 26) {			c -= 0x20;		}		s = (UINT8)*str++;		if (((s - 'a') & 0xff) < 26) {			s -= 0x20;		}	} while(s == c);	return((s > c)?1:-1);}void milank_ncpy(char *dst, const char *src, int maxlen) {	int		i;	if (maxlen > 0) {		maxlen--;		for (i=0; i<maxlen && src[i]; i++) {			dst[i] = src[i];		}		dst[i] = '\0';	}}void milank_ncat(char *dst, const char *src, int maxlen) {	int		i;	int		j;	if (maxlen > 0) {		maxlen--;		for (i=0; i<maxlen; i++) {			if (!dst[i]) {				break;			}		}		for (j=0; i<maxlen && src[j]; i++, j++) {			dst[i] = src[j];		}		dst[i] = '\0';	}}char *milank_chr(const char *str, int c) {	int		s;	if (str) {		do {			s = *str;			if (s == c) {				return((char *)str);			}			str++;		} while(s);	}	return(NULL);}#endif// ---- Shift-JIS#if defined(SUPPORT_SJIS)int milsjis_cmp(const char *str, const char *cmp) {	int		s;	int		c;	do {		s = (UINT8)*str++;		if ((((s ^ 0x20) - 0xa1) & 0xff) < 0x3c) {			c = (UINT8)*cmp++;			if (s != c) {				goto mscp_err;			}			s = (UINT8)*str++;			c = (UINT8)*cmp++;		}		else {			if (((s - 'a') & 0xff) < 26) {				s -= 0x20;			}			c = (UINT8)*cmp++;			if (((c - 'a') & 0xff) < 26) {				c -= 0x20;			}		}		if (s != c) {			goto mscp_err;		}	} while(s);	return(0);mscp_err:	return((s > c)?1:-1);}int milsjis_memcmp(const char *str, const char *cmp) {	int		s;	int		c;	do {		c = (UINT8)*cmp++;		if ((((c ^ 0x20) - 0xa1) & 0xff) < 0x3c) {			s = (UINT8)*str++;			if (c != s) {				break;			}			c = (UINT8)*cmp++;			s = (UINT8)*str++;		}		else if (c) {			if (((c - 'a') & 0xff) < 26) {				c &= ~0x20;			}			s = (UINT8)*str++;			if (((s - 'a') & 0xff) < 26) {				s &= ~0x20;			}		}		else {			return(0);		}	} while(s == c);	return((s > c)?1:-1);}int milsjis_kanji1st(const char *str, int pos) {	int		ret;	ret = 0;	while((pos >= 0) &&		((((str[pos--] ^ 0x20) - 0xa1) & 0xff) < 0x3c)) {		ret ^= 1;	}	return(ret);}int milsjis_kanji2nd(const char *str, int pos) {	int		ret = 0;	while((pos > 0) && ((((str[--pos] ^ 0x20) - 0xa1) & 0xff) < 0x3c)) {		ret ^= 1;	}	return(ret);}void milsjis_ncpy(char *dst, const char *src, int maxlen) {	int		i;	if (maxlen > 0) {		maxlen--;		for (i=0; i<maxlen && src[i]; i++) {			dst[i] = src[i];		}		if (i) {			if (milsjis_kanji1st(src, i-1)) {				i--;			}		}		dst[i] = '\0';	}}void milsjis_ncat(char *dst, const char *src, int maxlen) {	int		i;	int		j;	if (maxlen > 0) {		maxlen--;		for (i=0; i<maxlen; i++) {			if (!dst[i]) {				break;			}		}		for (j=0; i<maxlen && src[j]; i++, j++) {			dst[i] = src[j];		}		if ((i > 0) && (j > 0)) {			if (milsjis_kanji1st(dst, i-1)) {				i--;			}		}		dst[i] = '\0';	}}char *milsjis_chr(const char *str, int c) {	int		s;	if (str) {		do {			s = *str;			if (s == c) {				return((char *)str);			}			if ((((s ^ 0x20) - 0xa1) & 0xff) < 0x3c) {				str++;				s = *str;			}			str++;		} while(s);	}	return(NULL);}#endif// ---- EUC#if defined(SUPPORT_EUC)int mileuc_cmp(const char *str, const char *cmp) {	int		s;	int		c;	do {		s = (UINT8)*str++;		if (((s - 0xa1) & 0xff) < 0x5d) {			c = (UINT8)*cmp++;			if (s != c) {				goto mscp_err;			}			s = (UINT8)*str++;			c = (UINT8)*cmp++;		}		else {			if (((s - 'a') & 0xff) < 26) {				s -= 0x20;			}			c = (UINT8)*cmp++;			if (((c - 'a') & 0xff) < 26) {				c -= 0x20;			}		}		if (s != c) {			goto mscp_err;		}	} while(s);	return(0);mscp_err:	return((s > c)?1:-1);}int mileuc_memcmp(const char *str, const char *cmp) {	int		s;	int		c;	do {		c = (UINT8)*cmp++;		if (((c - 0xa1) & 0xff) < 0x5d) {			s = (UINT8)*str++;			if (c != s) {				break;			}			c = (UINT8)*cmp++;			s = (UINT8)*str++;		}		else if (c) {			if (((c - 'a') & 0xff) < 26) {				c -= 0x20;			}			s = (UINT8)*str++;			if (((s - 'a') & 0xff) < 26) {				s -= 0x20;			}		}		else {			return(0);		}	} while(s == c);	return((s > c)?1:-1);}int mileuc_kanji1st(const char *str, int pos) {	int		ret;	ret = 0;	while((pos >= 0) &&		(((str[pos--] - 0xa1) & 0xff) < 0x5d)) {		ret ^= 1;	}	return(ret);}int mileuc_kanji2nd(const char *str, int pos) {	int		ret = 0;	while((pos > 0) && (((str[--pos] - 0xa1) & 0xff) < 0x5d)) {		ret ^= 1;	}	return(ret);}void mileuc_ncpy(char *dst, const char *src, int maxlen) {	int		i;	if (maxlen > 0) {		maxlen--;		for (i=0; i<maxlen && src[i]; i++) {			dst[i] = src[i];		}		if (i) {			if (mileuc_kanji1st(src, i-1)) {				i--;			}		}		dst[i] = '\0';	}}void mileuc_ncat(char *dst, const char *src, int maxlen) {	int		i;	int		j;	if (maxlen > 0) {		maxlen--;		for (i=0; i<maxlen; i++) {			if (!dst[i]) {				break;			}		}		for (j=0; i<maxlen && src[j]; i++, j++) {			dst[i] = src[j];		}		if ((i > 0) && (j > 0)) {			if (mileuc_kanji1st(dst, i-1)) {				i--;			}		}		dst[i] = '\0';	}}char *mileuc_chr(const char *str, int c) {	int		s;	if (str) {		do {			s = *str;			if (s == c) {				return((char *)str);			}			if (((s - 0xa1) & 0xff) < 0x5d) {				str++;				s = *str;			}			str++;		} while(s);	}	return(NULL);}#endif// ---- otherint milstr_extendcmp(const char *str, const char *cmp) {	int		c;	int		s;	do {		while(1) {			c = (UINT8)*cmp++;			if (!c) {				return(0);			}			if (((c - '0') & 0xff) < 10) {				break;			}			c |= 0x20;			if (((c - 'a') & 0xff) < 26) {				break;			}		}		while(1) {			s = *str++;			if (!s) {				break;			}			if (((s - '0') & 0xff) < 10) {				break;			}			s |= 0x20;			if (((s - 'a') & 0xff) < 26) {				break;			}		}	} while(s == c);	return((s > c)?1:-1);}char *milstr_nextword(const char *str) {	if (str) {		while(!(((*str) - 1) & 0xe0)) {			str++;		}	}	return((char *)str);}char *milstr_list(const char *lststr, UINT pos) {	if (lststr) {		while(pos) {			pos--;			while(*lststr++ != '\0') {			}		}	}	return((char *)lststr);}

⌨️ 快捷键说明

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