• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CD-ROMからexeを起動するとファイルを読み込まない)

CD-ROMからexeを起動するとファイルを読み込まない

このQ&Aのポイント
  • 自作したゲームのexeファイルを起動したところ、ファイルを読み込んでくれないので困っています。
  • CD-ROMに焼いてから、CD-ROMからexeファイルを起動させるとファイルを読み込んでくれません。
  • 開発環境は、VS.NET2003 C++です。別の方法でファイルを読み込むことはできないでしょうか?

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

  • ベストアンサー
  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.1

fopen("ファイル名","r+t") "t"が何だったか記憶が定かでないですが "r+"は、読み込みと書き込みの引数じゃなかったでしょうか? CDは当然読み取りのみ可能なデバイスですので、書き込み属性でファイルを開こうにも開けないので、fopen自体が失敗するんじゃないのかな?

dotneer
質問者

お礼

試してみたところ、それで動きました。 ひょっとしたらと思ったんですけどあまり試さずに質問しました。確かに書き込み不可なCDからr+とかwとかやったら不味いですね。  ご指摘ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.3

>r+tのtというのはテキストモードといわれるものです。 それは先にも書いた様にC言語では、 環境によってはそうならない物のありえますということです。 また、今回の問題の本質は、経験者の方なら分かると思いますが、 テキストモードの指定とはなんら関係ありません。 問題は"+"によるRead/Writeの指定によるものです。 なので、C言語で規定されているモードをNo2にて列挙しました。 "+"を指定することによってどういう事が起こるのかを きちっと理解していただきたかったためです。

すると、全ての回答が全文表示されます。
  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.2

>if(NULL == (fp = fopen("ファイル名","r+t"))) "t"というモードは存在しません。 C言語で規定されているのは以下のモードです。 #ただし環境によっては"t"がなにか意味を持つこともありえます。 r:テキストファイルを読取りモードでオープン w:テキストファイルを書込みモードで生成、または長さ0に切り捨て a:ファイルの終わりからの書込みモードでオープンまたは生成 rb:バイナリファイルを読取りモードでオープンする。 wb:バイナリファイルを書込みモードで生成、または長さ0に切り捨て ab:バイナリファイルの終わりの位置から書込みモードでオープン生成 r+:テキストファイルを更新(読取りと書込み)モードでオープン w+:ファイルを更新モードで生成するか、長さ0に切り捨て a+:ファイルの終わりから書込みをモードでオープンまたは生成 r+b(rb+):バイナリを更新(読取りと書込み)モードでオープン w+b(wb+):バイナリを更新モードで生成するか、長さ0に切り捨て a+b(ab+):バイナリをファイルの終わりの位置から書込み > 他の方法でfopen("../フォルダ名/ファイル名")にしても駄目 相対パスにすると、ドライブ文字などは実行されたカレントの ドライブになるので、No1さんの書いていることが起こります。 パスはインストールさせて使うか、もしくは固定の 絶対パスを指定して開くしかないでしょう。 読み込みだけでよいなら"r+"ではなく"r"を指定します。 バイナリならば"rb"を指定することでReadOnlyで開くことが可能です

dotneer
質問者

お礼

 r+tのtというのはテキストモードといわれるものです。 詳しくは  http://www5c.biglobe.ne.jp/~ecb/c/c00.htmlに載っています。  自分はテキストモードにして読み込むようにしてあるのですが、別にtはつけなくてもいいようなので後から外しました。

すると、全ての回答が全文表示されます。

関連するQ&A