Sprintf function converting int to a single char instead of a string

132 Views Asked by At

I'm trying to convert the unsigned long integer converted_binary, which contains 10000000000 to a string, but sprintf converts it to a single character 1 instead.

I am able to know this through the vscode debugger.sprintf error

I expect sprintf to convert the details of converted_binary to a string, but it doesn't. I initially thought the problem was with the malloc, but that doesn't seem to be the case as the problem persists even if manually create a character array large enough.

I've also tried to replace the sprintf with printf to see if something is wrong with the converted_binary variable, but it prints out 10000000000 to stdout normally.

This is the code snippet:

int get_bit(unsigned long int n, unsigned int index)
{
        unsigned long int converted_binary, arg_int_len, int_len = 0;
        char *converted_string;
        int bit;

        /*convert n to binary*/
        converted_binary = convert(n);
        /*convert binary to string*/
        arg_int_len = converted_binary;
        do
        {
                arg_int_len = arg_int_len / 10;
                ++int_len;
        }
        while (arg_int_len != 0);
        converted_string = malloc(sizeof(char *) * int_len);
        if (converted_string == NULL)
                return (-1);
        sprintf(converted_string, "%lu", converted_binary);
        /*Loop through string to binary at index*/
        bit = (int)converted_string[index];
                /*pass that into a variable*/

        /*Return the variable*/
        return bit;
}
0

There are 0 best solutions below