質問です
入力した文字列を反転して出力するプログラムを作りました

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

int main(){
char str[256]; //反転前
char str_r[256]; //反転後
int len,i,j;

printf("入力>");
gets(str);

len=strlen(str);
j=len;
for(i=0;i<len;i++){
str_r[i]=str[j-1];
j--;
}
printf("%s\n",str_r);
       return 0;
}

これで文字列を入力すると3文字や7文字などの特定の字数のときは問題ないのですが、
それら以外の字数の文字列を入力すると反転した文字列が出力された後に『や・などのゴミがついてしまいます
何故でしょうか?