【问题标题】:How to get the current working directory(current working folder) name instead of the path name?如何获取当前工作目录(当前工作文件夹)名称而不是路径名?
【发布时间】:2014-04-22 12:53:29
【问题描述】:

我知道如何通过getcwd函数获取CWD的路径名,我正在使用strtok函数获取目录名(表示当前工作文件夹),有什么东西可以通过简单的查询或者函数来获取这个东西吗?

【问题讨论】:

  • getcwd 已经给出了目录路径。你在找realpath(3) 吗?
  • 使用下面答案中建议的基本名称来仅获取目录名称(不带路径),即对于 /usr/bin/sort ,基本名称将返回您的排序。

标签: c++ c linux path


【解决方案1】:

如果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);
  }

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      使用任何方便的东西:

      对于这种特殊情况,所有这些都非常易于使用。如果你使用了这么多,把它分解成一个“帮助”子程序。

      【讨论】:

        猜你喜欢
        • 2020-03-19
        • 2019-01-27
        • 1970-01-01
        • 2014-03-10
        • 1970-01-01
        • 2012-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多