Decimal to Binary / Other Bases, done in multiple files

These programs are almost complete. As they stand, they work for bases <= 10. They need a very minor extension to handle larger bases.

Decimal-to-Binary main()

// decimal to binary converter
// 2019-10-29
#include <stdio.h>
#include <stdlib.h>     // atoi()

#define BUFLEN 33   /* enough for largest possible unsigned integer */

void dec2bin(char *str, unsigned value, unsigned size);

int main(int argc, char **argv)
{
    for (int i = 1; i < argc; i++) {
        unsigned value = atoi(argv[i]);
        char string[ BUFLEN ];
        dec2bin( string, value, BUFLEN );
        printf("%u = %s\n", value, string);
    }
    return 0;
}

dec2bin()

#include <string.h>     // strlen()

void reverse_in_place(char *str);

void dec2bin(char *str, unsigned value, unsigned size)
{
    char *cursor = str;
    unsigned quotient, remainder;
    do {
        quotient = value / 2;
        remainder = value % 2;
        *cursor = ('0' + remainder);
        cursor++;

        value = quotient;
    } while (value > 0);
    *cursor = '\0';

    reverse_in_place(str);
}

void reverse_in_place(char *str)
{
    char *end = str + strlen(str) - 1;
    while (str < end) {
        char t = *str;
        *str = *end;
        *end = t;
        str++;
        end--;
    }
}

Decimal-to-Base main()

// decimal to binary converter
// 2019-10-29
#include <stdio.h>
#include <stdlib.h>     // atoi()

#define BUFLEN 33   /* enough for biggest possible unsigned integer */

void dec2base(char *str, unsigned value, unsigned size, unsigned base);

int main(int argc, char **argv)
{
    for (int i = 1; i < argc; i += 2) {
        unsigned value = atoi(argv[i]);
        unsigned base = atoi(argv[i+1]);
        char string[ BUFLEN ];

        dec2base( string, value, BUFLEN, base );
        printf("%u = %s (%u)\n", value, string,  base);
    }
    return 0;
}

dec2base()

#include <string.h>     // strlen()

void reverse_in_place(char *str);

void dec2base(char *str, unsigned value, unsigned size, unsigned base)
{
    char *cursor = str;
    unsigned quotient, remainder;
    do {
        quotient = value / base;
        remainder = value % base;
        *cursor = ('0' + remainder);
        cursor++;

        value = quotient;
    } while (value > 0);
    *cursor = '\0';

    reverse_in_place(str);
}

void reverse_in_place(char *str)
{
    char *end = str + strlen(str) - 1;
    while (str < end) {
        char t = *str;
        *str = *end;
        *end = t;
        str++;
        end--;
    }
}