将命令行arg复制到变量C

时间:2013-09-28 01:48:35

标签: c variables command-line-arguments

如何将命令行arg复制到c中的变量?如果是这样做的话。

myprog "Hello, world!"

我想将参数的值存储在char变量中。不确定我是否朝着正确的方向前进。

假设总是只传递1个参数。

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

  int len;
  len=strlen(argv[1]);
  char *array;

  array= malloc((len +1) * sizeof(char));
  int i;
  for(i=0;i<=len;i++){

    // This does not work... am a little lost
    array[i]=*(argv+1)[i];

  }
...
}

有人能指出我正确的方向。

2 个答案:

答案 0 :(得分:5)

如果你不打算操纵参数,你可以复制指针,如下所示:

int main(int argc, char* argv[]) {
    char* array;

    array = argv[1];

    ...
}

否则,您可以复制字符串,如下所示:

int main(int argc, char* argv[]) {
    char* array;

    array = strdup(argv[1]);
}

答案 1 :(得分:1)

看起来像是运营商优先问题。当您想要的是*(argv+1)[i]时,代码*((argv+1)[i])会被评估为(*(argv+1))[i]。你最好只使用argv[i][0]

评估为*((argv+1)[i])等同于*(*((argv+1)+i))*(*(argv+1+i))*(argv[i+1]),它试图挑选参数#1到len + 1的第一个字符。

通常,如果使用下标而不是指针算法,则代码更清晰。不必要的指针算法最好留在求职面试中解答问题。