#include #include void reverse(char s[]) { int i = 0; while (s[i] != '\0') { ++i; } --i; char c; for (int j = 0; j < i / 2; ++j) { c = s[i - j]; s[i - j] = s[j]; s[j] = c; } } void itoa(int n, char s[]) { int i, sign; if ((sign = n) < 0) { n = -n - 1; } i = 0; do { s[i++] = n % 10 + '0'; } while ((n /= 10) > 0); if (sign < 0) { s[i++] = '-'; } s[i] = '\0'; reverse(s); } void itob(int n, char s[], int b) { int i, sign; if ((sign = n) < 0) { n = -n; } i = 0; do { s[i++] = (n % b <= 9) ? n % b + '0' : n % b - 10 + 'a'; } while ((n /= b) > 0); if (sign < 0) { s[i++] = '-'; } s[i] = '\0'; reverse(s); } int main() { char s[32]; itoa(INT_MIN, s); printf("%s\n", s); itob(380, s, 16); printf("%s\n", s); return 0; }