我在代码中识别闪存驱动器时遇到了问题。
幸运的是我的代码可以从闪存驱动器运行。那么在C(或C ++)中是否有一种方法可以告诉运行程序的驱动器号(或驱动器名)?
我需要知道的原因是当我插入USB驱动器时,它正在运行一个程序,将文件从计算机复制到USB驱动器本身。
答案 0 :(得分:4)
GetModuleFileName可以找到你的司机信,如:
TCHAR ExeName[MAX_PATH];
GetModuleFileName(NULL, ExeName, MAX_PATH);
TCHAR DriveLetter = ExeName[0];
您可能会发现GetDriveType API也很有用。
答案 1 :(得分:1)
您可以使用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]应该只提供驱动器的字母。
答案 2 :(得分:-2)
在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 \调试\ ConsoleApplication1.exe中
在Linux上:(使用g ++在线编译器)
主要
我猜测使用的确切编译器是无关紧要的,因为提供这些参数的操作系统工作。