【发布时间】:2011-09-20 03:45:12
【问题描述】:
我发现了类似的帖子,但我对strtok_r 的问题没有明确的答案。
我正在使用strtok_r 解析命令行以获取我需要通过带有标志的 execv 执行的命令,但是,出于测试目的,我将其打印出来。尝试分隔多个字符(不包括空格)时,它可以正常工作。但是在测试空格时,使用下面的代码:
void tokenize(char *str1)
{
char *token;
char *saveptr1;
int j, i;
const char *delim = " ";
i = strlen(str1);
for(j = 0; j < i; j++, str1 = NULL)
{
token = strtok_r(str1, delim, &saveptr1);
if(token == NULL)
break;
printf("save: %s\n", token);
printf("\n");
}
}
我得到以下测试字符串的输出 (ls -al):
save: ls
【问题讨论】: