- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ショートカットで起動した場合のカレントディレクトリ)
ショートカットで起動した場合のカレントディレクトリ
このQ&Aのポイント
- ショートカットで起動した場合のカレントディレクトリに結果を出力するプログラムの修正方法を教えてください。
- 実行ファイルのあるディレクトリに結果を出力するプログラムを修正する方法を教えてください。
- ショートカットを起動したときに結果が実行ファイルのあるディレクトリに作成されてしまう問題を解決する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>実行ファイルのあるディレクトリに結果を出力するCで書いたプログラムがあります。 実行ファイル名を取得して、パス名解析などして出力ファイル名を作成している。 という認識でよろしいでしょうか? >ソースリストを見たところ、結果を出力するファイルは、 > fp = fopen("temp.txt", "w"); >でファイルをオープンしていました。 こちらは「カレントディレクトリ」に出力するよう指示しているので、 「実行ファイルのあるディレクトリに結果を出力する」にはなっていませんが。 # fopenの前にカレントディレクトリを実行ファイルのある場所に変更していればその限りではありません。 >ショートカットをおいたディレクトリに出力するようにするにはどうやったらよいのでしょうか? ショートカットから起動した場合、どのショートカットから起動したのか…というのを取得する方法がありますかね? # なさそうな気もしますが…… ショートカットのプロパティでカレントディレクトリが設定できますからそちらで設定する。 ということになるかと。 # 「作業フォルダ」とかの名前になってるかと。 プログラム実行中でもそのプロセスのカレントディレクトリは変更される可能性がありますから… 「カレントディレクトリにファイルを出力」「カレントディレクトリ下のファイルから入力」という組み方は問題になる場合がある。というコトは認識しておいた方がいいでしょう。
お礼
早速の回答ありがとうございます。 >ショートカットのプロパティでカレントディレクトリが設定できますからそちらで設定する。 ありました。できました!! >こちらは「カレントディレクトリ」に出力するよう指示しているので、 >「実行ファイルのあるディレクトリに結果を出力する」にはなっていませんが。 このプログラムを今まで使っていて、「実行ファイルのあるディレクトリ」=「カレントディレクトリ」と理解していました。 「実行ファイルのあるディレクトリ」と「カレントディレクトリ」は違うのですね。勘違いしていました。 ということは、普通の実行ファイルの起動では、「カレントディレクトリ」が「実行ファイルのあるディレクトリ」に設定されて起動されている、ということですね。 ショートカットでの起動では、プロパティでカレントディレクトリの設定後に、実行ファイルが起動されるわけですね。 ショートカットを作ると、デフォルトで、「実行ファイルのあるディレクトリ」をカレントディレクトリに設定しているので、結果、ショートカットを作っても、実行ファイルのあるディレクトリにファイルが作成されていたわけですね。 納得しました。