2014-02-09 37 views
-2

我已经问过这个问题,做了一个非常糟糕的工作发布它导致混淆的答案,没有帮我解决我的问题。这次我正在努力使我的问题更容易解决。这是下面的问题......如何正确传递这个C字符串数组

int builtin_cmd(char **argv); 
int main() 
{ 
    char *argv[128]; //create an array of c_strings with 128 slots in the array 
    //put 'quit' into argv[0].. (This was done by another file given to me by the professor) 
    printf("%s\n", argv[0]); //prints 'quit', as it should 
    builtin_cmd(argv); //call builtin_cmd and pass argv to the function 
} 
int builtin_cmd(char **argv) 
{ 
    printf("%s\n", argv[0]); //prints nothing, should have printed 'quit' 
} 

基本上,我有在功能builtin_cmd正在访问char *argv[128]问题。我将数组中的第一个索引设置为c_string'quit',然后在那里打印出来,就像我期望的一样,printf()在终端打印出'quit'。但是,一旦我打电话给builtin_cmd(argv);,行printf("%s\n", argv[0]);绝对不会打印出任何结果,就好像argv是空的一样。我该如何正确地将argv传递到函数builtin_cmd中?

+2

**不要**转贴问题:[如何正确传递这个C字符串数组?](http://stackoverflow.com/questions/21655310/how-do-i-pass-this-array -of-C-串-正确)。你还没有包括这个最重要的部分,在这里和这里都要求。 **发布填充数组**的代码。 (并在原始问题中进行)。 – WhozCraig

+0

是的,我重复它,以便人们可以更好地回答它。 – user3040019

+0

1. c [128]声明129个元素而不是128. 2.发布填充的代码。 – 2014-02-09 06:32:19

回答

0

它应该工作得很好,除非您忘记builtin_cmd()main()中的return值。查看Ideone上的运行结果。

相关问题