すいません、おしえてください。
入力された文字列を逆の順で表示するプログラムをつくりたいのですがうまくいきません
解答をみたら簡潔な答えがのってあって理解できたのですが、なぜこれではうまくいかないのでしょうか?

#include <stdio.h>
#include <string.h>


int main(void)
{
char str1[80],str2[80];
int a,b;
a =0;
printf("文字を入力してください(80文字未満)\n");

gets(str1);
b = strlen(str1);
str2[b] = '\0';
for(;str1[a];a++)
strcpy(str2[b-1],str1[a]);
/* もしくは str2[b-1] = str1[a]; */
printf(str2);

return 0;
}