- ベストアンサー
VisualC++6.0 で main関数への引数
#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が できたということです。 私としては同じディレクトリ内に作成してくれなくては 都合が悪いのです。この現象が起きる理由あるいは 解決法をご存知の方がいらっしゃいましたらどうかよろしく お願いします。
- みんなの回答 (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 の存在する位置のフルパスを取得できますから、それを使ってやればいいです。詳細はマニュアルを調べてください。
その他の回答 (1)
- inoue64
- ベストアンサー率29% (334/1115)
設定の変更が必要です xyz.exeを右クリック→プロパティ→プログラム→作業ディレクトリ これをC:\Windows\デスクトップに設定すればいいと思います
お礼
タブの出現方法を知りたかったのですが 本来の質問と大きく離れた内容なので 別の場で質問させてもらおうと思います。 たいへんありがとうございました。
補足
たいへんありがとうございます!! どうかもう一声お願いします。 xyz.exeを エル・エス・アイ ジャパン(株)の 「LSI C-86 Ver 3.3 試食版」 で作成したのならあなた様のおっしゃるとおりに解決できました。 ですがVCで作成した実行ファイルでは(私の環境では) 右クリック→プロパティ→・・・全般 のタブしかでてきません。 LSIで作成したものでは 全般、プログラム、フォント、メモリ、画面、その他 のタブが出てくるのですが・・・ VCでこれらの項目を出現させるにはどうしたらよいのでしょうか?
お礼
たいへんありがとうございます。 この方法を使えば完全に解決できました。