判斷程式執行時輸入的參數 |
答題得分者是:justdo
|
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
|
zilch
中階會員 發表:5 回覆:87 積分:78 註冊:2002-09-24 發送簡訊給我 |
主程式 main() 有兩個引數 argc 與 argv,即函數 main 標題的定義為 main( int argc, char *argv[] ) 其作用是 執行該檔 及 所相隨的 option。
如果將一程式 file.c 編譯完之後, 產生一 執行檔 file.exe。 當執行 file.exe 如 c:> file option1 option2 option3 則執行 file.exe 時, argc 的值為 4, argv 則 含 4 個字串,即
argv[0]="file"、 argv[1]="option1"、 argv[2]="option2"、 argv[3]="option3"。
就您的程式而言
argv[0]="Notepad"
argv[1]="1"
argv[2]="2"
argv[3]="3"
argv[4]="c"
argv[5]="hello"
|
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
感謝zilch的回答 我想請問的是,在WINDOWS下,project的主程式會有一個副程式 WINAPI WinMail(HINSTANCE, HINSTANCE, LPSTR,int)
裡面並沒有像傳統程式的 main( int argc, char *argv[] ) 而我知道我船進來的參數會被LPSTR 接走,所以我用一個LPSTR CmdLine
CmdLine就會變成 Notepad 1 2 3 c hello雖然我有笨方法把他們切開
不過我想應該會有main( int argc, char *argv[] )的方式
可以知道輸入參數個數及每個參數的內容
不知道Zilch可以解答我這一個疑惑嗎??
|
pkdemon
初階會員 發表:2 回覆:51 積分:25 註冊:2004-09-13 發送簡訊給我 |
blk5743你好, HRESULT GetArguments(LPTSTR pszArgs,int cchMaxPath); 這個Method應該是你需要的,使用方法請參考MSDN(我有點看不懂) 以下提供一個分割參數的方法
< class="code">
char buff[100], sCmdBuf[10][100];
char *token;
int i, nCmdCnt; for ( i = 0 ; lpCmdLine[i] != 0 ; i )
buff[i] = lpCmdLine[i]; buff[i] = 0; token = strtok(buff, " ");
nCmdCnt = 0; if (token != NULL)
{
strcpy(sCmdBuf[nCmdCnt], token);
nCmdCnt ;
token = strtok(NULL," ");
} while (token != NULL)
{
strcpy(sCmdBuf[nCmdCnt],token);
token = strtok(NULL," ");
nCmdCnt ;
}
|
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
可以使用 ParamCount, ParamStr
BCB Example:
void __fastcall TForm1::FormCreate(TObject *Sender) { for (int i=1;i<=ParamCount();i ) { if (LowerCase(ParamStr(i)) == "beep") Beep(10000,1000); elseif (LowerCase(ParamStr(i)) == "exit") Application->Terminate(); } } |
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |