#include<stdio.h>
int main(int number, char arg[])
{
int i;
printf("%d\n",number);
for(i=0;i<7;i++)
printf("%c",arg[i]);
printf("\n");
return 0;
}
我在Ubuntu終端上運行,並通過鍵入運行它「./a.out".I預期輸出是」 ./a.out」,而是一些垃圾值越來越打印。請解釋爲什麼?命令行參數傳遞
不僅如此,除非arg是一定要有足夠的值,使得arg [7]是一個有效的數組訪問,代碼本質上是從內存中抽取一個隨機值,不是嗎? – mlibby
@mcl這是一個非常有用的觀點。因爲,OP似乎想要使用字符打印,所以我將其更改爲使用'strlen',因爲字符串保證具有空終止。 –
@KingsIndian你也應該優化'strlen(argv [0])'部分到一個變量 - 在每個單獨的操作上調用strlen是不需要的,並不是每個編譯器都能夠實現這個事實。 – 2012-10-21 13:29:05