-5

在 C 程序中,我采用 2 个命令行参数并将它们作为单个参数连接到这样的函数:

some_function(strcat(argv[1], argv[2]));

所以,如果我传递 arg1 和 arg2 例如,传递的结果是 arg1arg2

然后,在函数内部,我需要将它们重新分离为 arg1 和 arg2。我尝试使用这样的 strtok() 函数(arg 是连接字符串):

source = strtok(arg, "\\");
destination = strtok(NULL, "\\");

但这似乎不起作用,因为连接的字符串 arg1arg2 存储在源中,而 null 存储在目标中。那么,我如何得到它,所以源是 arg1,目标是 arg2?

4

2 回答 2

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]仍然分开。

于 2013-04-29T20:59:19.657 回答
2

如果你只是为你的函数提供两个参数,你会省去很多麻烦:

some_function(argv[1], argv[2]);

然后,为源定义一个,为目标定义另一个将是微不足道的。如果您需要连接的字符串,您仍然可以函数内部进行操作。

于 2013-04-29T21:08:04.253 回答