1

わかりました、それで私はコードを持っています

char *トークン;
char *delimiter = " ";

トークン = strtok(コマンド、区切り文字);

strcpy(コマンド、トークン);

トークン = strtok(NULL、区切り文字);
strcpy(引数、トークン);

そして、実行するとEXC_BAD_ACCESSが表示されます。はい、コマンドと引数は既に定義されています。

4

1 に答える 1

4

command解析中にトークンをコピーするのはなぜcommandですか? それは非常に危険なことです。

できるよ:

char *command_tok, *args_tok;

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

ここで、正しく解析されると仮定して、最初の文字列のコマンドと引数の部分をポイントしますcommand_tokargs_tokこれらはバッファの一部を指してcommandおり、独自に割り当てられたメモリを持っていないことに注意してください。それらから他のバッファに安全にコピーできます。

于 2010-03-26T13:42:40.463 に答える