C/C++ Определить диск, на котором запущена программа

У меня возникла проблема с определением флешки в моем коде.

К счастью, мой код можно запустить с флешки. Так есть ли способ в C (или C++) сказать, на какой букве диска (или имени диска) работает программа?

Мне нужно знать причину: когда я подключаю USB-накопитель, запускается программа, которая копирует файлы с компьютера на сам USB-накопитель.

3 ответа

GetModuleFileName может узнать букву драйвера для вас, например:

TCHAR ExeName[MAX_PATH];
GetModuleFileName(NULL, ExeName, MAX_PATH);
TCHAR DriveLetter = ExeName[0];

Вы также можете найти API GetDriveType полезным.

Вы можете использовать ISO C++ _getcwd Функция для получения текущего рабочего каталога вашего приложения, например, так:

#include <direct.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    char buf[255];
    _getcwd(buf,255);
    printf("%c",buf[0]);
    return 0;
}

Массив char buf будет содержать путь к вашему исполняемому файлу, а buf[0] предоставит вам только букву диска.

Где-нибудь в вашей C/C++ программе у вас должна быть основная

как int main(int argc, char** argv)

первый аргумент argv содержит путь вашего приложения

РЕДАКТИРОВАТЬ:

Это отличается между Windows и Linux. Следующий вывод программы отличается в зависимости от платформы:

#include <iostream>

int main(int argc, char** argv) {

    std::cout << argv[0] << std::endl;
    return 0;
}

В Windows: (Visual Studio 2015)

C: \ ConsoleApplication1 \ Debug \ ConsoleApplication1.exe

В Linux: (Использование онлайн-компилятора с g++)

главный

Я предполагаю, что точный используемый компилятор не имеет значения, так как задание этих аргументов будет задачей ОС.

Другие вопросы по тегам