Возможно ли имя исполняемого файла без пути?
-
21-09-2019 - |
Вопрос
Привет, я пытаюсь использовать имя исполняемого файла и строку использования, я использую argv[0]
для этой цели, но вместо имени самого исполняемого файла он дает мне полный путь к нему.
Есть ли способ получить только имя исполняемого файла?
Решение
Просто найдите последний /.
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)
.Видеть документация по базовому имени.
Используйте GetModuleFileName http://msdn.microsoft.com/en-us/library/ms683197%28VS.85%29.aspx с аргументом дескриптора = 0
Просто используйте последнюю часть строки пути.Некоторая комбинация вызова strrchr
(получить последний разделитель пути) и, например. strcpy
или что-то подобное, чтобы скопировать часть от последнего разделителя пути до конца
Вы могли бы использовать getprogname()
если имя программы задано вашей ОС.