Eu vejo dois problemas em seu código, primeiro você apenas define um ponteiro para sua string já existente. Portanto, enquanto você escreve a string temp
, sobrescreve a string de entrada. Então crie uma nova string.
O segundo problema é que a string termina com 0
para sinalizar o final da string. Então, se você escrever o último caractere no início da nova string, ele terminará no primeiro caractere. Então, sua string invertida não será vista.
As seguintes alterações na sua função funcionaram para mim:
char* flip_string(char *string){
int i = strlen(string);
int j = 0;
// Doesn't really matter all I wanted was the same size string for temp.
char* temp = malloc(strlen(string));
puts("This is the original string");
puts(string);
puts("This is the \"temp\" string");
puts(temp);
i--;
for(i; i>=0; i--){
temp[j] = string[i];
if (j <= strlen(string)) {
j++;
}
}
return(temp);
}