【问题标题】:Is it possible to have the name of the executable without the path?是否可以在没有路径的情况下使用可执行文件的名称?
【发布时间】:2011-03-05 02:09:08
【问题描述】:

您好,我正在尝试使用可执行文件的名称和使用字符串,我使用 argv[0] 来实现此目的,但它没有提供可执行文件本身的名称,而是为我提供了完整的路径。

有没有办法只获取可执行文件名?

【问题讨论】:

    标签: c command-line command-line-arguments


    【解决方案1】:

    只需搜索最后一个 /。

    const char *exename = strrchr(argv[0], '/');
    if (exename)
        // skip past the last /
        ++exename;   
    else
        exename = argv[0];   
    

    【讨论】:

      【解决方案2】:

      据我所知,(至少在 linux 上)您只需要自己从 char* 中提取可执行文件名称即可。

      最简单的方法是使用basename(argv[0]),您可以通过包含“libgen.h”来获得。

      【讨论】:

      • 呃,你的意思是像标准C库中的basename()? ;)
      • 它不是标准的 C。它在 POSIX 中。
      【解决方案3】:

      如果它在您的平台上可用,则有一个函数char *basename(char *path)。见basename documentation

      【讨论】:

        【解决方案4】:

        使用 GetModuleFileName http://msdn.microsoft.com/en-us/library/ms683197%28VS.85%29.aspx 与句柄参数 = 0

        【讨论】:

        • 仅当他只想在 Windows 上编译时
        【解决方案5】:

        只需使用路径字符串的最后一部分。调用strrchr(获取最后一个路径分隔符)和例如strcpy 或类似的复制出从最后一个路径分隔符到结束的部分

        【讨论】:

          【解决方案6】:

          如果程序的名称是由您的操作系统设置的,您可以使用getprogname()

          【讨论】:

            猜你喜欢
            • 2014-12-02
            • 2018-08-06
            • 2010-11-04
            • 2013-10-28
            • 2014-06-16
            • 2020-01-22
            • 1970-01-01
            相关资源
            最近更新 更多