65,210
社区成员
发帖
与我相关
我的任务
分享
//看看这个怎么做的.
#define TOLOWER(x) ((x) | 0x20)
#define isxdigit(c) (('0' <= (c) && (c) <= '9') \
|| ('a' <= (c) && (c) <= 'f') \
|| ('A' <= (c) && (c) <= 'F'))
#define isdigit(c) ('0' <= (c) && (c) <= '9')
unsigned long strtoul(const char *cp,char **endp,unsigned int base)
{
unsigned long result = 0,value;
if (!base) {
base = 10;
if (*cp == '0') {
base = 8;
cp++;
if ((TOLOWER(*cp) == 'x') && isxdigit(cp[1])) {
cp++;
base = 16;
}
}
} else if (base == 16) {
if (cp[0] == '0' && TOLOWER(cp[1]) == 'x')
cp += 2;
}
while (isxdigit(*cp) &&
(value = isdigit(*cp) ? *cp-'0' : TOLOWER(*cp)-'a'+10) < base) {
result = result*base + value;
cp++;
}
if (endp)
*endp = (char *)cp;
return result;
}
long strtol(const char *cp,char **endp,unsigned int base)
{
if(*cp=='-')
return -strtoul(cp+1,endp,base);
return strtoul(cp,endp,base);
}
INT32S atoi(const INT8S *nptr)//
{
return strtol(nptr, ( INT8S **)NULL, 10);
}
const char *svalue = "1234567";
int value;
sscanf(savlue, "%d", &value);
int S2int(const char *str)
{
if(str == NULL)
return -1;
const char *num = str;
int m = 0;
int n = 0;
int len = strlen(str);
int i = 0;
while( (m=*(num++)-'0'))
{
if(i != len-1)
{
m *=10;
n *= 10;
n += m;
}
else
{
n += m;
break;
}
i++;
}
return n;
}