如何将命令行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];
}
...
}
有人能指出我正确的方向。
答案 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的第一个字符。
通常,如果使用下标而不是指针算法,则代码更清晰。不必要的指针算法最好留在求职面试中解答问题。