/** ** @file str2int.c ** ** @author Numerous CSCI-452 classes ** ** @brief C implementations of common library functions */ #ifndef STR2INT_SRC_INC #define STR2INT_SRC_INC #include #include /** ** str2int(str,base) - convert a string to a number in the specified base ** ** @param str The string to examine ** @param base The radix to use in the conversion ** ** @return The converted integer */ int str2int(register const char *str, register int base) { register int num = 0; register char bchar = '9'; int sign = 1; // check for leading '-' if (*str == '-') { sign = -1; ++str; } if (base != 10) { bchar = '0' + base - 1; } // iterate through the characters while (*str) { if (*str < '0' || *str > bchar) break; num = num * base + *str - '0'; ++str; } // return the converted value return (num * sign); } #endif