Print an int in C without Printf or any functions

后端 未结 3 1265
闹比i
闹比i 2021-01-19 03:37

I have an assignment where I need to print an integer in C without using printf, putchar, etc. No header files allowed to be included. No function calls except for anything

3条回答
  •  后悔当初
    2021-01-19 04:20

    Instead of calling my_char() in the loop instead "print" the chars to a buffer and then loop through the buffer in reverse to print it out.

    Turns out you can't use arrays. In which case you can figure out the max power of 10 (ie log10) with the loop. Then use this to work backwards from the first digit.

    unsigned int findMaxPowOf10(unsigned int num) {
        unsigned int rval = 1;
        while(num) {
            rval *= 10;
            num /= 10;
        }
        return rval;
    }
    
    unsigned int pow10 = findMaxPowOf10(num);
    
    while(pow10) {
        unsigned int digit = num / pow10;
        my_char(digit + '0');
        num -= digit * pow10;
        pow10 /= 10;
    }
    

提交回复
热议问题