如何获取当前工作目录(当前工作文件夹)名称而不是路径名?

时间:2014-03-17 10:47:09

标签: c++ c linux path

我知道如何通过getcwd功能获取 CWD 的路径名,并且我使用strtok功能获取< strong>目录名称(表示当前工作文件夹),是否可以通过简单查询或函数获取此内容?

3 个答案:

答案 0 :(得分:4)

如果getcwd()返回"/this/is/my/cwd"而您只想"cwd",那么您可能希望对getcwd()返回的内容使用basename()

#include <unistd.h> /* for getcwd() */
#include <libgen.h> /* for basename() */

[...]

  char cwd[PATH_MAX] = "";
  char * cwd_base = NULL;

  if (NULL == getcwd(cwd, sizeof(cwd)))
  {
    perror("getcwd() failed");
  }
  else
  {
    cwd_base = basename(cwd);
  }

  if (NULL != cwd_base)
  {
    printf("The current working directory's base name is '%s'.\n", cwd_base);
  }

答案 1 :(得分:3)

我会使用平台的目录分隔符strrchr(),而不是strtok()

当然,“当前工作文件夹”通常需要是完整的绝对路径才能对文件系统访问有用。

答案 2 :(得分:0)

使用方便的任何东西:

对于这种特殊情况,所有这些都非常容易使用。如果您使用这么多,请将其分解为“辅助”子例程。