- ベストアンサー
ターボC ファイルオープンのエラー
現在私は ボーランドのターボCを使用しプログラムをしています。 そこで質問なんですが、ファイル名を9文字以上にすると作成されたファイル名が9文字全部にならず 最初の8文字しかファイル名になっていません。 以下のプログラムとなっております。 char fname[128]; FILE *fp; sprintf(fname,"abcdefghijk.csv"); fp = fopne(fname,"w"); fclose(fp); 上記を実行すると生成されたファイル名が abcdefghijk.csvではなくabcdefgh,csvとなります ではよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
追記。 当然だけど、MS-DOS時代のTurbo CからはAPI関数は呼べないので、API関数を呼ぶライブラリを、アセンブラなどの他の言語で作成して、外部ライブラリとして呼び出ししないといけません。 なので、対象ファイルを「dir /X」で表示して、短いファイル名がどういうファイル名になるのか調べて、短いファイル名をfopenに指定した方が早いです。
その他の回答 (4)
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19867)
古い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関数を使って、正当な方法で変換しないといけません。
- 中村 拓男(@tknakamuri)
- ベストアンサー率35% (674/1896)
こっちじゃ駄目ですか? 「Borland C++ Compiler 5.5」無償版 提供 エンバカデロ http://www.embarcadero.com/jp/products/cbuilder/free-compiler
- tsunji
- ベストアンサー率20% (196/958)
MS-DOS時代のコンパイラなので、ファイルもファイル名8文字+拡張子3文字のファイル名にしか対応していません。
- neKo_deux
- ベストアンサー率44% (5541/12319)
> 現在私は ボーランドのターボCを使用しプログラムをしています。 古いので、互換性のためにショートファイルネームでファイル作成するって事では。 MS-DOSで長いファイル名作られたら、他のファイルを壊したり、削除できないファイルになったりって事故が起き得るし。 Windowsなんか存在しない時代のものなら、そういう事を想定して作るのは無理だし。