在C中连接一个字符串,然后重新分配它

时间:2013-04-29 20:55:17

标签: c

在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?

2 个答案:

答案 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]);

然后,为源定义一个而为目标定义另一个将是微不足道的。 如果你需要连接的字符串,你仍然可以在里面这个函数。

相关问题