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++)
главный
Я предполагаю, что точный используемый компилятор не имеет значения, так как задание этих аргументов будет задачей ОС.