Скопируйте результаты strtok в 2 строки в C - PullRequest
1 голос
/ 26 марта 2010

Хорошо, у меня есть код

char *token;
char *delimiter = " ";

token = strtok(command, delimiter);

strcpy(command, token);

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

и это дает мне EXC_BAD_ACCESS, когда я его запускаю, и да, команда и аргументы уже определены.

1 Ответ

4 голосов
/ 26 марта 2010

Почему вы копируете токен в command при анализе command? Это очень небезопасно.

Вы можете сделать:

char *command_tok, *args_tok;

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

Теперь command_tok и args_tok указывают на часть команды и аргументов исходной строки, если она анализируется правильно Обратите внимание, что они указывают на части буфера command и не имеют собственной выделенной памяти. Вы можете безопасно копировать их в другие буферы.

...