c语言如何得到磁盘分区名称
发布网友
发布时间:2022-03-01 08:39
我来回答
共2个回答
热心网友
时间:2022-03-01 10:08
代码如下,VS2012亲测,可以运行,给你注释的很清楚了,不懂的地方可以问我。
#include <windows.h>
#include <stdio.h>
int main()
{
int DSLength = GetLogicalDriveStrings(0,NULL);
//通过GetLogicalDriveStrings()函数获取所有驱动器字符串信息长度。
char* DStr = new char[DSLength];//用获取的长度在堆区创建一个c风格的字符串数组
GetLogicalDriveStrings(DSLength,(LPTSTR)DStr);
//通过GetLogicalDriveStrings将字符串信息复制到堆区数组中,其中保存了所有驱动器的信息。
int DType;
int si=0;
for(int i=0;i<DSLength/4;++i)
//为了显示每个驱动器的状态,则通过循环输出实现,由于DStr内部保存的数据是A:\NULLB:\NULLC:\NULL,这样的信息,所以DSLength/4可以获得具体大循环范围
{
char dir[3]={DStr[si],':','\\'};
//cout<<dir;
DType = GetDriveType((LPCWSTR)DStr+i*4);
//GetDriveType函数,可以获取驱动器类型,参数为驱动器的根目录
if(DType == DRIVE_FIXED)
{
printf("%c",*dir);
printf("硬盘\n");
}
si+=4;
}
system("pause");//
return 1;
}
热心网友
时间:2022-03-01 11:26
标准C
#include <stdio.h>
#include <stdlib.h>
#define start setpath()
#define GetDisk getdisk//获取磁盘
#ifdef GetDisk(char diskname[])
#else
#define false 0
#endif
#define pause while(1)//程序暂停
/************计算磁盘并且返回磁盘盘符******************/
int getdisk(char diskname[]){
FILE *fp;
if(!(NULL==(fp=(fopen(diskname,"wb"))))){
fclose(fp);
return 1;
}
return 0;
}
/**************将枚举出所有的盘符*****************/
void start{
int i;
char c,disk[9]={':','/','a','.','d','a','t'};
disk[8]='\0';
for (i=7;i>=0;i--){
disk[i]=disk[i-1];
}
for (c='A';c<='Z';c++){
disk[0]=c;
if(1==GetDisk(disk)){
printf("%c盘\n",c);
}
}
}
void main(){
start;
pause;
}