是否有可能没有路径的可执行文件的名称?

问题描述:

嗨我试图使用可执行文件的名称和用法字符串,我使用argv[0]这样的目的,而不是可执行文件本身的名称,它给了我完整的路径。是否有可能没有路径的可执行文件的名称?

有什么办法只获取可执行文件名吗?

只搜索最后一个/。

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

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

+1

仅当他只想在Windows上编译时 – tloach 2009-11-20 18:43:59

据我所知,(在Linux上,至少),你就必须从焦炭中提取自己的可执行文件名*。

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

+2

呃,你的意思是像标准C库中的basename()? ;) – SimonJ 2009-11-20 18:37:56

+0

啊,对。我忘了libgen.h是标准的。 – perimosocordiae 2009-11-20 18:44:41

+0

这不是标准C.它在POSIX。 – 2009-11-20 20:00:49

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

如果它在您的平台上可用,那么有一个功能。请参阅basename documentation

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