- ベストアンサー
絶対パスがx,y,zのファイル,ホルダを
c:\p.exeにドラッグしてc:\p.exeを実行したとき [GetCommandLine()] はどのようになるのでしょうか? 98se 95 Borland C++5.5 Comlierでは ["c:\p.exe" x y z] になるのですが Windows2000 + SP3, VC++ 6.0では ["c:\p.exe" "x" "y" "z"] となるそうです Me,Xp,NT,2000でBorland c++5.5 Compiler ではどうのようになるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
前回の質問の続きとして回答します。 (http://www.okweb.ne.jp/kotaeru.php3?q=543088) 次のようなプログラムにすれば、OSのバージョンに依存しないかと思いますがどうでしょうか? --------------------------------------------------------- #include <windows.h> #include <string> int WINAPI WinMain(HINSTANCE , HINSTANCE, LPSTR, int) { char param[256], buf[256]; char *p, *b; /*パラメータ取得とバッファ初期化*/ strncpy(param, GetCommandLine() , sizeof(param)); param[255] = '\0'; memset(buf, 0, sizeof(buf)); /*引用符の除去*/ p = param, b = buf; while(*p != '\0') { if (*p != '\"') { *b++ = *p++; } else { p++; } } /*ファイル名の区切りを\nにする*/ for(b = buf + 2; *b != '\0'; b++) { if ((*b == ':') && (*(b - 2) == ' ')) { *(b-2) = '\n'; } } /*結果確認*/ MessageBox(NULL, buf, "File Name", MB_OK); return 0; }
お礼
結局”で囲んでいるものといないものに対応できるので”を無視できる方法でやってみようと思います わざわざアプリまで組んでいただいてありがとうございました
補足
ありがとうございます 256だとこれがボトルネックになるので512として考えます ”を無視して格納するということですね ということは”で囲まれているかいないかの仕様しか今のところ無いということですね