17 static int charToInt(
char ch)
27 static inline int binChar(
char ch)
29 return (ch ==
'0' || ch ==
'1');
32 static inline int decChar(
char ch)
34 return (ch ==
'-' || ch ==
'+' || isdigit(ch));
37 const char* _scanf_getl(
const char *str,
int* dst,
int base,
unsigned width,
int isSigned)
41 int foundAtLeastOneDigit = 0;
45 case 2:
while(!binChar(*str)) str++;
47 case 10:
while(!decChar(*str)) str++;
49 case 16:
while(!isxdigit(*str)) str++;
51 default:
while(*str ==
' ' || *str ==
'\t') str++;
57 isNegative = (*str ==
'-');
58 if (*str ==
'+' || *str ==
'-')
66 if(!((ch >=
'0' && ch <=
'9') ||
67 (base == 2 && ((ch >=
'0' && ch <=
'1') || (ch ==
'.') || (ch ==
'_')) ) ||
68 (base == 16 && ((ch >=
'A' && ch <=
'F') || (ch >=
'a' && ch <=
'f')) )
70 if (!foundAtLeastOneDigit)
76 if(ch ==
'.' || ch ==
',' || ch ==
'_')
79 foundAtLeastOneDigit = 1;
80 num = base * num + charToInt(ch);