int类型转字符类型,itoa的实现 (to 16 10 8)

#include <limits.h>
#include <stdio.h>
#include <string.h>

#define N 48
char s[N];

void reverse(char s[]){
    int i, j, n=strlen(s), tmp;
    for (i=0, j=n-1; i<j; i++, j--)
        tmp = s[i], s[i] = s[j], s[j] = tmp;
}
void itoa(int n, int base)
{
    int i=0, sign; 
    char c;
    if ((sign=n) < 0) 
        n = -n;
    do {
        switch((c=n%base)){
            case 0: case 1: case 2: case 3: case 4:
            case 5: case 6: case 7: case 8: case 9:
                s[i++] = c + '0'; break;
            case 10: case 11: case 12:
            case 13: case 14: case 15:
                s[i++] = c + 'a' - 10; break;
        }
    }while ((n/=base) > 0);
    if (sign < 0) s[i++] = '-';
    s[i] = '\0';
    reverse(s);
    printf("%s\n", s);
}
int main(){
    itoa(INT_MIN, 3);
    itoa(123, 16);
    itoa(123, 10);
    itoa(123, 8);
    return 0;
}
发布了25 篇原创文章 · 获赞 2 · 访问量 812

猜你喜欢

转载自blog.csdn.net/yangjinjingbj/article/details/104056953