終了したようですがついでに

char str[256]="hoge";
では配列が"hoge"で初期化されますが、その後はstrは定数になります。
配列の先頭アドレスなんだからあたりまえですね。だからその後に
str="hoge2";
とはできないんです。
宣言部での=は初期化であり、それ以外では代入だということに注意してください。