電子書籍の厳選無料作品が豊富!

ドラッグ&ドロップすると、今まで正常に開けていたファイルが開かなくなってしまう

2つのファイルを開いて実行するwindowsのCUIプログラムをC言語で作成中です。
1つ目のファイルをドラッグアンドドロップしたファイルに置き換えるように改良したら、2つ目のファイル fp2 が開かなくなってしまいました。
なぜでしょう?
どのように改良したらよいのかもわかりません。教えてください。

プログラムの抜粋は以下の通りです。
------------
int main(int argn, char *argv[])
{
 FILE *fp1,*fp2;

 if(argn == 2)
  fp1 = fopen(argv[1], "r");
 else
  fp1 = fopen("hoge.txt","r");
 if(fp1 == NULL)
  printf("\nfp1が開けませんでした");

 fp2 = fopen("hoge2.txt","r");
 if(fp2 == NULL)
   printf("\nfp2が開けませんでした");

A 回答 (3件)

>D&Dするファイルと同じところにhoge2.txtをコピーすれば、(毎回では面倒ですが)


当面は対処できます。

相対パス指定ではなく、絶対パス指定にするように修正するべきでしょう。
実行ファイルのフルパス名を取得する方法はOS側にあるはずです。
    • good
    • 0
この回答へのお礼

>相対パス指定ではなく、絶対パス指定にするように修正するべきでしょう。
確かに、おっしゃる通りですね。
これで、改良方針が決まりました!

お付き合い、ありがとうございました。

お礼日時:2019/06/27 08:50

正解>#1.



単純に実行ファイルに D&D すると, そのファイルのあるディレクトリがカレントディレクトリになる.
    • good
    • 0
この回答へのお礼

回答ありがとうございます
>そのファイルのあるディレクトリがカレントディレクトリになる.

なるほど。
hoge2.txtを D&D するファイルと同じフォルダに移動したら動きました。
でも今度はD&Dしないと、当然のことながら、 fp2 が開かなくなってしまいました。

D&Dするファイルと同じところにhoge2.txtをコピーすれば、(毎回では面倒ですが)
当面は対処できます。
ありがとうございます

お礼日時:2019/06/27 06:50

とりあえず…カレントディレクトリはどこになっていて、そこにファイルはあるんですかね?



エクスプローラーから、実行ファイルにドラッグ&ドロップしたときって、カレントディレクトリとかどこになるんですかね〜?
# いちいち試していないので不明。
    • good
    • 0
この回答へのお礼

実行ファイル、対象となるテキストファイル全て同じフォルダにあります。

ドラッグ&ドロップしないときは hoge.txt と hoge2.txt で処理が進みます。
hoge1.txt をドラッグ&ドロップして hoge1.txt と hoge2.txt で処理を進めてほしいのですが、hoge1.txtは開けるのですが、今まで開けていた hoge2.txt のオープンでエラーになるんです。

お礼日時:2019/06/26 08:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!