第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

C中main的參數(shù)

C中main的參數(shù)

C
繁星coding 2019-10-25 15:07:24
我不知道該怎么辦!我對C基礎(chǔ)有很好的理解。結(jié)構(gòu),文件IO,字符串等。CLA之外的所有內(nèi)容。由于某種原因,我無法理解這個(gè)概念。任何建議,幫助或建議。PS我是Linux用戶
查看完整描述

3 回答

?
MMTTMM

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊

的簽名main是:


int main(int argc, char **argv);

argc指傳入的命令行參數(shù)的數(shù)量,其中包括用戶調(diào)用的程序的實(shí)際名稱。  argv包含從索引1開始的實(shí)際參數(shù)。索引0是程序名稱。


因此,如果您像這樣運(yùn)行程序:


./program hello world

然后:


argc為3。

argv [0]將為“ ./program”。

argv [1]將為“ hello”。

argv [2]將是“世界”。


查看完整回答
反對 回復(fù) 2019-10-25
?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

想象一下


*main() is also a function which is called by something else (like another FunctioN)


*the arguments to it is decided by the FunctioN


*the second argument is an array of strings


*the first argument is a number representing the number of strings


*do something with the strings

也許一個(gè)示例程序會有所幫助。


int main(int argc,char *argv[])

{


    printf("you entered in reverse order:\n");


    while(argc--)

    {

        printf("%s\n",argv[argc]);

    }


return 0;

}

它只是以相反的順序?qū)⒛斎氲乃袃?nèi)容打印為args,但是您應(yīng)該制作新的程序來做更多有用的事情。


編譯它(如打個(gè)招呼),從終端運(yùn)行它的參數(shù)如下


./hello am i here

然后嘗試對其進(jìn)行修改,以使其嘗試檢查兩個(gè)字符串是否彼此相反,那么您將需要檢查argc參數(shù)是否恰好為三個(gè),如果還有其他內(nèi)容會打印錯(cuò)誤


if(argc!=3)/*3 because even the executables name string is on argc*/

{

    printf("unexpected number of arguments\n");

    return -1;

}

然后檢查argv [2]是否與argv [1]相反,并打印結(jié)果


./hello asdf fdsa

應(yīng)該輸出


they are exact reverses of each other

最好的例子是文件復(fù)制程序,就像cp


cp file1 file2


cp是第一個(gè)參數(shù)(argv [0]而不是argv [1]),大多數(shù)情況下,除非需要引用或其他內(nèi)容,否則應(yīng)忽略第一個(gè)參數(shù)


如果您制作了cp程序,則您確實(shí)了解了主要參數(shù)...


查看完整回答
反對 回復(fù) 2019-10-25
?
天涯盡頭無女友

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊

Siamore,我一直看到每個(gè)人都使用命令行來編譯程序。我通過代碼:: blocks從ide使用x11終端,這是我的Linux機(jī)器上的gnu gcc編譯器。我從未從命令行編譯過程序。因此,Siamore,如果我希望程序名稱為cp,是否要初始化argv [0] =“ cp”; Cp是字符串文字。而且所有要輸出到stdout的東西都在命令行上?你給我的例子Siamore我理解了!即使您輸入的字符串只有幾個(gè)單詞,但仍然只是一個(gè)arg。因?yàn)樗挥秒p引號引起來。所以arg [0](編名)實(shí)際上是帶換行符的字符串文字?所以我明白為什么您使用if(argc!= 3)打印錯(cuò)誤。因?yàn)榫幟? argv [0],此后還有2個(gè)args,并且現(xiàn)在發(fā)生了錯(cuò)誤。我還會使用什么其他原因?我真的認(rèn)為我對如何從命令行或終端進(jìn)行編譯缺乏了解是我對此領(lǐng)域缺乏了解的原因??!Siamore,您幫助我更好地了解了cla!仍然沒有完全理解,但我并未忘記這個(gè)概念。我將學(xué)習(xí)從終端進(jìn)行編譯,然后重新閱讀您編寫的內(nèi)容。我敢打賭,那我會完全理解的!在您的幫助下,大聲笑


<>我不是寫自己的代碼,而是我寫的代碼。


#include <stdio.h>


int main(int argc, char *argv[])

{

    int i;


    printf("The following arguments were passed to main(): ");

    for(i=1; i<argc; i++) printf("%s ", argv[i]);

    printf("\n");


    return 0;

這是輸出:


anthony@anthony:~\Documents/C_Programming/CLA$ ./CLA hey man

The follow arguments were passed to main(): hey man

anthony@anthony:~\Documents/C_Programming/CLA$ ./CLA hi how are you doing?

The follow arguments were passed to main(): hi how are you doing?

因此argv是字符串文字的表,而argc是它們的數(shù)量?,F(xiàn)在argv [0]是程序的名稱。因此,如果我鍵入./CLA來運(yùn)行程序,則./CLA為argv [0]。上面的程序?qū)⒚钚性O(shè)置為接受無限數(shù)量的參數(shù)。如果需要,我可以將它們設(shè)置為僅取3或4。就像顯示的一個(gè)或您的示例一樣,Siamore ... if(argc!= 3)printf(“此處出現(xiàn)一些錯(cuò)誤”); 謝謝Siamore,沒有您就做不到!多虧了帖子的其余部分的時(shí)間和精力!


PS,以防將來出現(xiàn)這樣的問題……您永遠(yuǎn)不會知道問題是因?yàn)槲沂褂玫氖荌DE AKA Code :: Blocks。如果要在上面運(yùn)行該程序,它將打印該程序的路徑/目錄。例如:?/ Documents / C / CLA.c,它必須從終端運(yùn)行并使用命令行進(jìn)行編譯。gcc -o CLA main.c,并且您必須位于文件目錄中。


查看完整回答
反對 回復(fù) 2019-10-25
  • 3 回答
  • 0 關(guān)注
  • 604 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號