實現函數itob

# 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 = NULL;
    scanf ("%d %d",&num,&s);
    ret = my_itoa(num,str,s);
    printf ("%s\n",ret);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章