进制转换

来源:互联网 发布:c语言 知乎 编辑:程序博客网 时间:2024/05/12 06:46
# include <stdio.h># include <assert.h># include <string.h>void swap(char *p1,char *p2){    char tmp = *p1;    *p1 = *p2;    *p2 = tmp;}void reverse(char *start,char *end){    assert(start != NULL && end != NULL);    while (start < end)    {        swap(start,end);        start++;        end--;    }}char *my_itoa(int n,char *p,int b){    int i = 0;    char *pret;    pret = p;    assert(p != NULL);    if (p != NULL)    {        if (n < 0)        {            *p = '-';            n = -n;            p++;        }        while (n > 0)        {            *p = "0123456789ABCDEF"[n%b];            n /= b;            p++;        }        *p = '\0';        if (*pret == '-')            reverse(pret+1,pret + strlen(pret) - 1);        else            reverse(pret,pret + strlen(pret) - 1);        return pret;    }    return NULL;}int main(){    char str[32];    int num;    int s;    char *ret;    scanf ("%d %d",&num,&s);    ret = my_itoa(num,str,s);    printf ("%s\n",ret);    return 0;}
0 0
原创粉丝点击