📄 support.c
字号:
{
if (((c>='0')&&(c<='9'))||
((c>='a')&&(c<='f'))||
((c>='A')&&(c<='F')) )
return(TRUE);
else
return(FALSE);
}
int isdigit(int c)
{
return((c>='0')&&(c<='9'));
}
int strcmp(const char *s1,const char *s2)
{
int len1, len2;
len1 = strlen(s1);
len2 = strlen(s2);
if (len1 != len2)
return (len1 - len2);
while (*s1 || *s2)
if (*s1++ != *s2++)
return (*--s1 - *--s2);
return 0;
}
char *strchr(const char *s, int c)
{
while(*s)
{
if (*s==(char)c)
{
return((char *)s);
}
s++;
}
return(0);
}
char *strrchr(char *s, int c)
{
char *fs;
for (fs = 0;; ++s)
{
if (*s == c)
fs = s;
if (!*s)
return fs;
}
}
char *strtok(char *s, int c)
{
char *fs = "";
while(*s)
{
if (*s==(char)c)
{
fs = (char *)(s + 1);
*s = 0;
return(fs);
}
s++;
}
return(fs);
}
int strncmp(const char * cs,const char * ct,size_t count)
{
register signed char result = 0;
while (count)
{
if (( result = (*cs - *ct++)) != 0 || !*cs++)
break;
count--;
}
return(result);
}
unsigned int atoui(char *cp)
{
unsigned int itmp,base;
char c;
/* Eliminate leading and trailing white space */
while((*cp==' ')||(*cp=='\t')) cp++;
while((strlen(cp))&&((cp[strlen(cp)-1]==' ')||(cp[strlen(cp)-1]=='\t')))
cp[strlen(cp)-1]=0;
if ((cp[0]=='0')&&((cp[1]&0x5f)=='X'))
{
base=16;
cp+=2;
}
else
base=(cp[0]=='0')?8:10;
itmp=0;
while(*cp)
{
c=*cp++;
if ((c>='a')&&(c<='f')&&(base==16))
c&=0x5f;
if ((c>='0')&&(c<='9'))
{
if ((base==8)&&(c>'7'))
return(0);
itmp=itmp*(unsigned int)base;
itmp+=(unsigned int)(c-'0');
}
else
{
if ((base!=16)||(!((c>='A')&&(c<='F'))) )
return(0);
else
{
itmp<<=4;
itmp+=(c>='A')?((unsigned int)(c-0x37)):((unsigned int)(c-'0'));
}
}
}
return(itmp);
}
#define isspace(c) ((c == ' ') ? 1 : 0)
unsigned long
strtoul(
const char *str,
char **endptr,
int base)
{
const char *s;
unsigned long acc, cutoff;
int c;
int neg, any, cutlim;
/*
* See strtol for comments as to the logic used.
*/
s = str;
do {
c = (unsigned char) *s++;
} while (isspace(c));
if (c == '-') {
neg = 1;
c = *s++;
} else {
neg = 0;
if (c == '+')
c = *s++;
}
if ((base == 0 || base == 16) &&
c == '0' && (*s == 'x' || *s == 'X')) {
c = s[1];
s += 2;
base = 16;
}
if (base == 0)
base = c == '0' ? 8 : 10;
cutoff = MAXUINT(sizeof(UINT32)) / (unsigned long)base;
cutlim = MAXUINT(sizeof(UINT32)) % (unsigned long)base;
for (acc = 0, any = 0;; c = (unsigned char) *s++) {
if (isdigit(c))
c -= '0';
else if (isalpha(c))
c -= isupper(c) ? 'A' - 10 : 'a' - 10;
else
break;
if (c >= base)
break;
if (any < 0)
continue;
if ((acc > cutoff) || ((acc == cutoff) && (c > cutlim))) {
any = -1;
acc = MAXUINT(sizeof(UINT32));
} else {
any = 1;
acc *= (unsigned long)base;
acc += c;
}
}
if (neg && any > 0)
acc = -acc;
if (endptr != 0)
*endptr = (char *) (any ? s - 1 : (char *) str);
return (acc);
}
unsigned long atoul(const char *str)
{
return(strtoul (str, (char **) 0, 0));
}
#define max_allowable(A) (MAXINT(sizeof(INT32))/A - 1)
long strtol(const char *str, char **endptr, int base)
{
long i = 0;
int s = 1;
int c;
while(isspace(*str)) { // skip white space
str++;
}
if (*str == '+') // sign flag check
str++;
else if (*str == '-')
{
s = -1;
str++;
}
if (*str == '0')
{
if (toupper(*++str) == 'X')
base = 16,str++;
else if (base == 0)
base = 8;
}
if (base == 0)
base = 10;
if (base <= 10)
for (; isdigit(*str); str++) // digit str to number
{
if (i < max_allowable(base))
i = i * base + (*str - '0');
else
i = MAXINT(sizeof(INT32));
}
else if (base > 10)
{
for (; (c = *str); str++)
{
if (isdigit(c))
c = c - '0';
else
{
c = toupper(c);
if (c >= 'A' && c < ('A' - 10 + base))
c = c - 'A' + 10;
else
break;
}
if (i < max_allowable(base))
i = i * base + c;
else
i = MAXINT(sizeof(INT32));
}
}
else
return 0; // negative base is not allowed
if (endptr) *endptr = (char *) str;
if (s == -1)
i = -i;
return i;
}
unsigned long atol(const char *s)
{
return (long) strtol (s, (char **) 0, 10);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -