- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
long func_strtol(char *p , char **cpyar , int type ){
long int result = 0, stp = 0, t = 0,step = 0, integer = 0, sign = 1;
if (*p == 45 ){
sign = -1;
step++;
}
else if(*p == 43){
step++;
}
if (!type ){
type = 10;
}
if( type >= 0 && type <= 10 ) {
while ( isdigit( p[step])) {
step++;
}
}
else if( type >= 11 && type <= 36 ) {
while( (p[step ] - 55 <= ( type - 1 ) && isalpha( p[step] ) ||
(p[step ] - 87 <= ( type - 1) && isalpha( p[step] ) ||
isdigit( p[step])
) ) ) {
step++;
}
}
stp = step - 1;
while( isalpha( p[stp] ) || isdigit( p[stp] )){
if( isalpha( p[stp] ) ){
integer += p[stp] >= 97 ? (p[stp] - 87) * pow(type,t) : (p[stp] - 55) * pow(type,t);
}
else if((p[stp] - 48 ) < type ){
integer += (p[stp] - 48) * pow( type, t );
}
stp--;
t++;
}
*cpyar = step == 1 && *p == '-' ? &p[step - 1]: &p[step];
result = (integer ) * sign;
return result ;
}
Unnumbered 23.05.2017 12:45 # 0