2016-01-25 103 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