C / C ++ Определить диск, на котором запущена программа - PullRequest
2 голосов
/ 10 июля 2009

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

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

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

Ответы [ 3 ]

4 голосов
/ 10 июля 2009

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

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

Также может оказаться полезным API GetDriveType .

1 голос
/ 10 июля 2009

Вы можете использовать функцию 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] предоставит вам только букву диска.

0 голосов
/ 10 июля 2009

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

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

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

EDIT:

Это отличается в 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 ++)

основной

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...