2016-01-25 104 views
0

我試圖從命令行參數輸出給定輸入的字符。我在這個問題上纏着一些麻煩。命令行參數,打印列和行

當我運行./test美孚吧,我希望它打印

./test 
Foo 
o 
o 

bar 
a 
r 

雖然它可能不是最好的解決辦法,我想它使用的字符數組的數組來完成,它看起來像一個三維數組,所以我要用一個三重嵌套for循環。 我到目前爲止是這樣的:

for (i = 1; i < argc; i++) { 
    for (j = 0; j < argv[argc][j]; j++) { 
     for (k = 0; k < argv[argc][j]; k++) { 
      printf("%c", k); 
     } 
    } 
    printf("\n"); 
} 

最外部的循環從1開始,因爲我不希望打印出./test位。但我迷路了。我可以使用二維數組,但我想嘗試一下額外的維度。

你能給我幾點提示嗎?

+0

我沒有得到你爲什麼用第三嵌套循環它可以在2個循環來完成? –

+0

相同^。另外,問題是什麼?你說你想做什麼,但不是代碼爲你做什麼 –

+0

我敢打賭,它正在做一些未定義的事情,因爲你沒有做任何事來檢查你是否傳遞了參數字符串的結尾。 –

回答

3

你的條件(j < argv[argc][j]k < argv[argc][j])是錯誤的。

修復這樣的:

#include <stdio.h> 

int main(int argc, char *argv[]){ 
    for (int i = 0; i < argc; i++) { 
     puts(argv[i]); 
     if(i){ 
      for(int j = 1; argv[i][j]; ++j){ 
       printf("%c\n", argv[i][j]); 
      } 
      printf("\n"); 
     } 
    } 
    return 0; 
} 
1

可以在2個循環解決這個作爲

for (i = 1; i < argc; i++) { 
    for (j = 0; argv[i][j]!='\0'; j++) { 
     printf("%c", argv[i][j]); 
    } 
    printf("\n"); 
} 
+0

這是什麼'j artm

+0

這是一個錯誤。我改變了它。謝謝@artm –

+0

您的索引仍然不正確 – artm