【发布时间】:2011-03-05 02:09:08
【问题描述】:
您好,我正在尝试使用可执行文件的名称和使用字符串,我使用 argv[0] 来实现此目的,但它没有提供可执行文件本身的名称,而是为我提供了完整的路径。
有没有办法只获取可执行文件名?
【问题讨论】:
标签: c command-line command-line-arguments
您好,我正在尝试使用可执行文件的名称和使用字符串,我使用 argv[0] 来实现此目的,但它没有提供可执行文件本身的名称,而是为我提供了完整的路径。
有没有办法只获取可执行文件名?
【问题讨论】:
标签: c command-line command-line-arguments
只需搜索最后一个 /。
const char *exename = strrchr(argv[0], '/');
if (exename)
// skip past the last /
++exename;
else
exename = argv[0];
【讨论】:
据我所知,(至少在 linux 上)您只需要自己从 char* 中提取可执行文件名称即可。
最简单的方法是使用basename(argv[0]),您可以通过包含“libgen.h”来获得。
【讨论】:
如果它在您的平台上可用,则有一个函数char *basename(char *path)。见basename documentation。
【讨论】:
使用 GetModuleFileName http://msdn.microsoft.com/en-us/library/ms683197%28VS.85%29.aspx 与句柄参数 = 0
【讨论】:
只需使用路径字符串的最后一部分。调用strrchr(获取最后一个路径分隔符)和例如strcpy 或类似的复制出从最后一个路径分隔符到结束的部分
【讨论】:
如果程序的名称是由您的操作系统设置的,您可以使用getprogname()。
【讨论】: