int my_getnbr_base(char *str, char *base) { int offset; char signe; int value; my_strupcase(str); my_strupcase(base); if (is_arg_valid(str, base) == 0) return (0); offset = 0; signe = 1; while (str[offset] != '\0' && my_is_char_inbase(str[offset], base) == 0) signe *= *(str + offset++) == '-' ? -1 : 1; value = 0; while (my_is_char_inbase(*(str + offset), base) == 1) { if (value > (signe == -1 ? MIN_INT : MAX_INT) / my_strlen(base)) return (0); value *= my_strlen(base); value += get_char_value_for_base(*(str + offset), base); ++offset; } return (value * signe); }
char * my_strupcase(char *s) { if (s != NULL && *s != '\0') { if (*s >= 'a' && *s <= 'z') *s -= 32; my_strupcase(s + 1); } return (s); }