在C程序中,我正在使用2个命令行参数并将它们作为单个参数连接到这样的函数:
some_function(strcat(argv[1], argv[2]));
所以,如果我传递arg1和arg2例如传递的结果是arg1arg2
然后,在函数内部,我需要将它们重新分配到arg1和arg2中。我尝试使用像这样的strtok()函数(arg是连接字符串):
source = strtok(arg, "\\");
destination = strtok(NULL, "\\");
但这似乎不起作用,因为连接字符串arg1arg2存储在source中,null存储在destination中。那么,我怎么得到它所以source是arg1而destination是arg2?
答案 0 :(得分:3)
解决上述问题的最简单方法是将参数复制到新数组中。
char args[strlen(argv[1]) + strlen(argv[2]) + 1];
sprintf(args, "%s%s", argv[1], argv[2]);
或者,传统上更多:
char *args = malloc(strlen(argv[1]) + strlen(argv[2]) + 1);
sprintf(args, "%s%s", argv[1], argv[2]);
/* free args when you are through with it */
现在,argv[1]
和argv[2]
仍然分开。
答案 1 :(得分:2)
如果你只是为你的函数提供两个参数,你会省去很多麻烦:
some_function(argv [1],argv [2]);
然后,为源定义一个而为目标定义另一个将是微不足道的。 如果你需要连接的字符串,你仍然可以在里面这个函数。