Вопрос

Привет, я пытаюсь использовать имя исполняемого файла и строку использования, я использую 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() если имя программы задано вашей ОС.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top