将strtok的结果复制到C中的2个字符串

时间:2010-03-26 13:40:21

标签: c strtok strcpy

好的,我有代码

char *token;
char *delimiter = " ";

token = strtok(command, delimiter);

strcpy(command, token);

token = strtok(NULL, delimiter);
strcpy(arguments, token);

当我运行它时它给了我EXC_BAD_ACCESS,是的,命令和参数已经定义了。

1 个答案:

答案 0 :(得分:4)

为什么在解析command时将令牌复制到command?这是一件非常不安全的事情。

你可以这样做:

char *command_tok, *args_tok;

command_tok = strtok(command, delimiter);
args_tok = strtok(NULL, delimiter);

现在command_tokargs_tok指向初始字符串的命令和参数部分,假设它正确解析。请注意,它们指向command缓冲区的一部分,并且没有自己分配的内存。您可以安全地从它们复制到其他缓冲区。