You need to initialize bin, for example.
bin = malloc(1);
bin[0] = '\0';
or use calloc:
bin = calloc(1, 1);
You also have an error:
bin = (char *)realloc(bin, sizeof(char) * (sizeof(bin)+1));
it should be:
bin = (char *)realloc(bin, sizeof(char) * (strlen(bin)+1));
(.. strlen, sizeof).
strcat.
, .
0, 1 '0', '1'.
strcat char .
, , , , , (, !):
int int_to_bin(int k)
{
char *bin;
int tmp;
bin = calloc(1, 1);
while (k > 0)
{
bin = realloc(bin, strlen(bin) + 2);
bin[strlen(bin) - 1] = (k % 2) + '0';
bin[strlen(bin)] = '\0';
k = k / 2;
}
tmp = atoi(bin);
free(bin);
return tmp;
}