2016-01-20 36 views
-3

當我運行下面的代碼:如果我沒有在命令提示符中輸入它,ARGC值如何初始化?

void main(int argc, char** argv) 
{ 

    if (argc != 2){ 
     fprintf(stderr, "Usage: %s video-dir-path\n", argv[0]); 

     exit(-1); 
    } 


    XFishTracker ft(argv[1]); 

    int id = 0; 

    while (true) 
    { 
     id++; 
... 
... 

退出,因爲ARGC的價值顯然不是2 如果我註釋掉出口(-1)行,我得到一個斷言錯誤。 我認爲,因爲ARGC不是2,我的程序不運行或繼續。我如何將argc初始化爲2並讓程序運行,當它甚至可以正常看到命令提示符時退出。

如何讓命令提示符保持並給出兩個輸入以便argc == 2?

+1

[不是問題]'void main'是錯誤的。 'main'必須總是返回一個'int' – NathanOliver

+3

你如何運行你的程序?這聽起來像你正在尋找命令行參數,但你實際上沒有給出任何。如果你有,那麼ARGC/ARGV會有這些數據。 –

+1

對於有兩個參數'argc'的程序將是3! –

回答

0

看來你還沒有給任何命令行參數,這就是爲什麼你越來越沒有在argc和argv。

那麼你可以給任意數量的命令行參數。如果您使用Visual Studio,請轉到項目屬性 - >調試。在那裏你可以看到一個盒子「命令行參數」給出儘可能多的,你想

+1

_「這就是爲什麼你在argc和argv中什麼也得不到」_你知道你至少會在argv中得到程序名嗎? –

+0

非常感謝你!有效!!! :D 謝謝!!!! – Isha

1

argc取自您在命令提示符處鍵入的內容。這裏沒有足夠的信息來查看可執行文件的名稱,但我們假設foo。然後

% foo # argc == 1 
% foo banana # argc == 2, etc. 
相關問題