strtok只拆分前面带有/的空格?

时间:2016-04-28 19:05:14

标签: c string unix posix

我正在尝试编写自己的shell,到目前为止,我一直使用strtok获取命令行参数并在白色空格上进行分割。这在大多数情况下都很有效,除非是某些命令使用带有空格的文件路径,例如:

ls -la /users/bayesianStudent/desktop/test\ sample/documents/unread\ stuff

在这些情况下,strtok函数甚至在路径之间分裂。有没有办法避免这种情况,并且例如在上面的命令中只获得3个令牌,例如只有当空格没有前面的/时才能拆分?以下是我目前的代码:

char ** getCommands(char * input )
{
    char ** result = NULL;
    int spaces = 0;
    char * token = strtok(input, " ");

   /* split string and append tokens to 'res' */

    while (token) {
      result = realloc (result, sizeof (char*) * ++spaces);

      if (result == NULL)
          exit (-1); /* memory allocation failed */

      result[spaces-1] = token;

      token = strtok (NULL, " ");
  }

/* realloc one extra element for the last NULL */

  result = realloc (result, sizeof (char*) * (spaces+1));
  result[spaces] = 0;

  return result;
}

0 个答案:

没有答案