Favor recursion over loops, especially if going forwards then backwards
Loops, 67 bytes
l;f(char*s){for(l=0;s[l];)putchar(s[l++]);for(;l;)putchar(s[--l]);}
Recursion, 47 bytes
f(char*s){*s?putchar(*s),f(s+1),putchar(*s):0;}
You can remove two for-loops and a counter variable. Even if you use just one for-loop in order to loop in one direction, you could save ~10 bytes with this transformation.