Convert Decimal Number to Binary or Hex Without itoa function

Code

#include <stdio.h>
#include <stdint.h>

void reverse(char *s){
    char *temp = s;
    while(*s){
        s++;
    }
    s--;
    while(temp<s){
        char t = *temp;
        *temp  = *s;
        *s = t;
        temp++;
        s--;
    }
}

void print_base(uint16_t num, uint8_t base) {
    char s[100];
    int k = 0;

    if(num==0){
        s[k++] = '0';
        s[k] = '\0';
    }

    while(num>0){
        int rem = num%base;
        if(rem<9){
            s[k++] = rem + '0';
        }else{
            s[k++] = (rem - 10) + 'A';
        }
        num/=base;   
    }

    s[k] = '\0';

    reverse(s);

    printf("%s",s);

}

int main() {
    uint16_t num;
    uint8_t base;
    scanf("%hu %hhu", &num, &base);

    print_base(num, base);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

10 2

Expected Output

1010