プロが教えるわが家の防犯対策術!

#include<stdio.h>
int main(int argc,char *argv[])
{
  FILE *fp;
  fp=fopen("abc.txt","w");
}


こんな感じの xyz という名前のプログラムがあります。
MS-DOSで、xyzと同じディレクトリから
  xyz tekitou リターン
と打ち込んでプログラムを起動させたらxyzと同じディレクトリの中に
abc.txtを作成してくれます。xyz.exeのダブルクリック起動でも
同様の結果です。

だけどxyz.exeのアイコンの上に適当なファイルを
ドラッグ&ドロップさせて起動させた場合
abc.txtは全然別の場所に作成されてしまいます。

正確に言うと、Windows98上でVisualC++6.0を使用して
上記のプログラムでデスクトップ上にxyz.exeを作成して
(C:\WINDOWS\デスクトップ\xyz.exeの)アイコンに
適当なファイルをD&Dしてプログラムを実行したらC:\にabc.txtが
できたということです。

私としては同じディレクトリ内に作成してくれなくては
都合が悪いのです。この現象が起きる理由あるいは
解決法をご存知の方がいらっしゃいましたらどうかよろしく
お願いします。

A 回答 (2件)

#include "stdafx.h"


#include "windows.h"

int main(int argc, char* argv[])
{
char buf[1024];
GetModuleFileName(NULL, buf, sizeof(buf));

// ここで
// bufから xyz.exe を取り除き
// テキストファイルのフルパスを生成する

// ここで本来の処理

return 0;
}

GetModuleFileName()という関数を使えば xyz.exe の存在する位置のフルパスを取得できますから、それを使ってやればいいです。詳細はマニュアルを調べてください。
    • good
    • 0
この回答へのお礼

たいへんありがとうございます。
この方法を使えば完全に解決できました。

お礼日時:2001/05/03 23:30

設定の変更が必要です


xyz.exeを右クリック→プロパティ→プログラム→作業ディレクトリ
これをC:\Windows\デスクトップに設定すればいいと思います

この回答への補足

たいへんありがとうございます!!
どうかもう一声お願いします。
xyz.exeを
エル・エス・アイ ジャパン(株)の 「LSI C-86 Ver 3.3 試食版」
で作成したのならあなた様のおっしゃるとおりに解決できました。

ですがVCで作成した実行ファイルでは(私の環境では)
右クリック→プロパティ→・・・全般
のタブしかでてきません。
LSIで作成したものでは
全般、プログラム、フォント、メモリ、画面、その他
のタブが出てくるのですが・・・

VCでこれらの項目を出現させるにはどうしたらよいのでしょうか?

補足日時:2001/05/03 23:27
    • good
    • 0
この回答へのお礼

タブの出現方法を知りたかったのですが
本来の質問と大きく離れた内容なので
別の場で質問させてもらおうと思います。

たいへんありがとうございました。

お礼日時:2001/05/03 23:45

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