• ベストアンサー

ターボC ファイルオープンのエラー

現在私は ボーランドのターボCを使用しプログラムをしています。 そこで質問なんですが、ファイル名を9文字以上にすると作成されたファイル名が9文字全部にならず 最初の8文字しかファイル名になっていません。 以下のプログラムとなっております。 char fname[128]; FILE *fp; sprintf(fname,"abcdefghijk.csv"); fp = fopne(fname,"w"); fclose(fp); 上記を実行すると生成されたファイル名が abcdefghijk.csvではなくabcdefgh,csvとなります ではよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

追記。 当然だけど、MS-DOS時代のTurbo CからはAPI関数は呼べないので、API関数を呼ぶライブラリを、アセンブラなどの他の言語で作成して、外部ライブラリとして呼び出ししないといけません。 なので、対象ファイルを「dir /X」で表示して、短いファイル名がどういうファイル名になるのか調べて、短いファイル名をfopenに指定した方が早いです。

その他の回答 (4)

回答No.4

古いTurbo Cは、ロングファイル名は未対応です。 8+3を超えるロングファイル名をfopenで指定してファイル作成すると、必ず、8+3のショートファイル名になります。 ファイルを作成するモードでは「ロングファイル名のファイルを作るのは不可能」ですので、ご注意を。 なお、ロングファイル名の既存ファイルをfopenする場合は、ロングファイル名からショートファイル名に変換する必要があります。 例えば「ABCDEFGHIJ.TXT」なら、OSのAPI関数で「ショートファイル名への変換」を行って、8+3の短いファイル名を取得して、それを指定しないといけません。 マイドキュメントのあるフォルダで、コマンドプロンプトで「DIR /X」ってやってみましょう。 2013/06/27 14:51  <DIR>             . 2013/06/27 14:51  <DIR>             .. 2013/06/27 14:51  <DIR>     FAVORI~1  Favorites 2013/06/27 14:51  <DIR>     MYDOCU~1 My Documents 2013/06/27 14:51  <DIR>             WINDOWS 2013/06/27 14:51  <DIR>     スター~1   スタート メニュー 2013/06/27 14:51  <DIR>     デスク~1   デスクトップ と言う表示になります。 この表示の「FAVORI~1」とか「MYDOCU~1」が「短いファイル名」です。 この変換は「単純に~1が付くだけじゃない」ので、API関数を使って、正当な方法で変換しないといけません。

回答No.3

こっちじゃ駄目ですか? 「Borland C++ Compiler 5.5」無償版 提供 エンバカデロ http://www.embarcadero.com/jp/products/cbuilder/free-compiler

  • tsunji
  • ベストアンサー率20% (196/958)
回答No.2

MS-DOS時代のコンパイラなので、ファイルもファイル名8文字+拡張子3文字のファイル名にしか対応していません。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

> 現在私は ボーランドのターボCを使用しプログラムをしています。 古いので、互換性のためにショートファイルネームでファイル作成するって事では。 MS-DOSで長いファイル名作られたら、他のファイルを壊したり、削除できないファイルになったりって事故が起き得るし。 Windowsなんか存在しない時代のものなら、そういう事を想定して作るのは無理だし。

関連するQ&A

専門家に質問してみよう