>>979
getsとfgetsの仕様の違いに引掛ってるな。
getsは末尾の'\n'を取り除くが、fgetsは取り除かない。

だから、たとえば
fgets(buf, sizeof(buf));
の入力待ちで
hoge[cr]
したとき、bufに入ってる文字列は"hoge\n"だ。
"hoge\n"なんてファイル名は普通ないから、それで開けないのだろう。
末尾の\nを取り除くべし。