【发布时间】:2011-02-01 04:34:50
【问题描述】:
好的,我有代码
字符 * 令牌; 字符 * 分隔符 = " "; 令牌 = strtok(命令,分隔符); strcpy(命令,令牌); token = strtok(NULL, 分隔符); strcpy(参数,令牌);当我运行它时它给了我 EXC_BAD_ACCESS,是的,命令和参数已经定义了。
【问题讨论】:
好的,我有代码
字符 * 令牌; 字符 * 分隔符 = " "; 令牌 = strtok(命令,分隔符); strcpy(命令,令牌); token = strtok(NULL, 分隔符); strcpy(参数,令牌);当我运行它时它给了我 EXC_BAD_ACCESS,是的,命令和参数已经定义了。
【问题讨论】:
为什么在解析command 时将令牌复制到command?这是非常不安全的事情。
你可以这样做:
char *command_tok, *args_tok;
command_tok = strtok(command, delimiter);
args_tok = strtok(NULL, delimiter);
现在command_tok 和args_tok 指向初始字符串的命令和参数部分,假设它解析正确。请注意,它们指向command 缓冲区的一部分,并且没有自己分配的内存。您可以安全地从它们复制到其他缓冲区。
【讨论】: