当前位置:首页 » 编程语言 » c语言获取硬盘

c语言获取硬盘

发布时间: 2022-05-03 03:24:22

c语言 获取硬盘物理号

获取的大多数是磁盘序列号而已
物理号不容易获取
可以参考下
http://hiker2008.blog.51cto.com/10867/77918
就于逻辑序列号而言
我把VB改写成C的,可以参考下:
#include
#include
main()
{
DWORD
VolumeSerialNumber;
char
VolumeName[256];
GetVolumeInformation(
"c:\\
",
VolumeName,12,
&VolumeSerialNumber,
NULL,NULL,NULL,10
);
printf("c盘的卷标:%s
\n",VolumeName);
printf("c盘的序列号:%ld
\n",VolumeSerialNumber);
}

② c语言中有什么函数是可以在windows下读取磁盘扇区信息的

可以使用windows api CreateFile(...),使用磁盘模式,可以针对分区打开或者针对硬盘打开;之后用ReadFile(...) 按扇区读取磁盘数据;
这两个函数具体用法可以在一些编程论坛、博客中找到,很容易找到的。

③ c语言如何得到磁盘分区名称

标准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;
}

④ c语言中怎么读取一个磁盘文件

由于\为转义字符,所以对于目录分割符\需要写两个\字符,即\\。读取为:
fopen("F:\\test\\test.txt", "r");

⑤ C语言 获取磁盘可用空间

给,在VC6上已经编译运行确认:

/*
* 获取硬盘分区序列号
* [email protected] 2007.5.28
*/
#include <string.h>
#include <stdio.h>
#include <windows.h>
int main() {
_ULARGE_INTEGER lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes;
DWORD serialNumber, maxComponentLength, fsFlags;
TCHAR szFileSystem[12];
TCHAR szVolumeName[24];
TCHAR szRoot[4] = "c:\\";//这里写上你需要获取的磁盘的分区

if (!GetVolumeInformation(
szRoot,
szVolumeName,
sizeof(szVolumeName),
&serialNumber,
&maxComponentLength,
&fsFlags,
szFileSystem,
sizeof(szFileSystem))) {
printf("Failed to retrieve drive information\n");
}
GetDiskFreeSpaceEx(szRoot, &lpFreeBytesAvailableToCaller, &lpTotalNumberOfBytes, &lpTotalNumberOfFreeBytes);
//根据MSDN的说明,如果分区大于2G一定要用GetDiskFreeSpaceEx

printf("卷标: %s$ %s\n分区类型: %s\n卷序列号: %04X-%04X\n",
szRoot,
szVolumeName,
szFileSystem,
serialNumber >> 16,
serialNumber & 0xFFFF
);
printf("分区总空间大小: %d MB\n",lpTotalNumberOfBytes.QuadPart / (1024 *1024));
printf("分区剩余空间大小: %d MB\n",lpTotalNumberOfFreeBytes.QuadPart / (1024 *1024));
printf("调用者可用的空间大小: %d MB\n",lpFreeBytesAvailableToCaller.QuadPart / (1024 *1024));
return(0);
}

⑥ c语言怎么随机的读取磁盘文本文件

你的用变量path作为文件绝对路径,你每次要将它的值改变,而你的文件位置是保持不变的,这样当然读不到文件。你要保持同步,就是说path的值发生改变是就要同时把文件给重命名了,给文件重命名用rename()函数,函数原型:int rename(char *lpOldName,char *lpNewName);第一个参数是文件原名,第二个是重命名后的文件名,若重命名成功返回1,否则返回0。头文件stdio.h或io.h。还有要说你上面的代码有错,char path[20]="c:\\"; //你忘记了转义字符而且你应该从path[3]开始赋值,因为"c:\\"除去一个空字符就只有3个字符,下标是从0开始的(\\是一个字符)继续追问: 来自手机问问 文件都在一个文件夹里面,直接改变对应的路径是不是能直接读取到对应的文件呢?我想产生一个随机的路径,而这个随机只在文件名上体现 补充回答: 来自手机问问 知道你的意思,你是是比如文件是c:\test.txt,然后随机名是c:\t138.txt。这就对了,重命名可以不改变文件所在目录啊,比如这样调:rename("c:\\test.txt","c:\\t138.txt");
文件名就由test.txt变成了t138.txt,而所在目录并没有发生变化。 继续追问: 来自手机问问 那怎么才能展现随机读取呢?新手,包含。 补充回答: 来自手机问问 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
char path[]="C:\\ff.txt";
char rname[2];
FILE *fp;
/*产生10~20的随机数*/
srand((unsigned)time(NULL));
/*将整数转换成字符串*/
itoa(rand()%20+10,rname,10);
path[2]=rname[0];
path[3]=rname[1];
/*重命名文件*/
rename("C:\\ff.txt",path);
fp=fopen(path,"r");
if(fp==NULL)
{
printf("Open the file failed.\n");
}
else
{
printf("Open the file succed.\n");
}
return 0;
}
这段代码演示了c盘原来有一个ff.txt文件,后来被随机重命名为**.txt,程序去读取。
运行程序前要保证c盘存在ff.txt文件。 继续追问: 来自手机问问 还是那样,编译报错,哎,谢了 补充回答: 来自手机问问 我vc6编译通过啊,你什么编译器? 继续追问: 来自手机问问 一样。可能有地方写错了。 补充回答: VC6.0编译通过啊,可以稍微改一下: 补充回答: #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{ char path[]="C:\\ff.txt";
char rname[2];
FILE *fp; /*产生10~20的随机数*/
srand((unsigned)time(NULL));
/*将整数转换成字符串*/
itoa(rand()%20+10,rname,10);
path[3]=rname[0];
path[4]=rname[1];
/*重命名文件*/
rename("C:\\ff.txt",path);
fp=fopen(path,"r");
if(fp==NULL)
{
printf("Open the file failed.\n");
}
else
{
printf("Open the file succed.\n");
}
return 0;
}

⑦ 关于C语言程序在一个固定电脑中运行,读取硬盘序列号的问题

之前收集的获取硬盘信息的函数语言是C++,可以成功获得硬盘驱动器的信息,希望能帮到您
void
CGetdiskinfo(DWORD
*dwNum,char
chDriveInfo[][256])//获取硬盘信息
{
DWORD
DiskCount
=
0;
//利用GetLogicalDrives()函数可以获取系统中逻辑驱动器的数量,函数返回的是一个32位无符号整型数据。
DWORD
DiskInfo
=
GetLogicalDrives();
//通过循环操作查看每一位数据是否为1,如果为1则磁盘为真,如果为0则磁盘不存在。
while(DiskInfo)
{
//通过位运算的逻辑与操作,判断是否为1
//Sleep(10);
if(DiskInfo&1)
{
DiskCount++;
}
DiskInfo
=
DiskInfo
>>
1;//通过位运算的右移操作保证每循环一次所检查的位置向右移动一位。*/
}
//
if
(*dwNum
<
DiskCount)
//
{
//
return;//实际的磁盘数目大于dwNum
//
}
*dwNum
=
DiskCount;//将磁盘分区数量保存
//-------------------------------------------------------------------//
//通过GetLogicalDriveStrings()函数获取所有驱动器字符串信息长度
int
DSLength
=
GetLogicalDriveStrings(0,NULL);
//
WCHAR*
DStr
=
new
WCHAR[DSLength];
char
*DStr=new
char[DSLength];
memset(DStr,0,DSLength);
//通过GetLogicalDriveStrings将字符串信息复制到堆区数组中,其中保存了所有驱动器的信息

⑧ C语言,获取硬盘剩余空间函数的使用方法。GetDiskFreeSpaceEx函数使用方法

GetDiskFreeSpaceEx是windows的API啊,调用之后就会获得信息。
说明
获取与一个磁盘的组织以及剩余空间容量有关的信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpRootPathName String,不包括卷名的磁盘根路径名
lpFreeBytesAvailableToCaller LARGE_INTEGER,指定一个变量,用于容纳调用者可用的字节数量
lpTotalNumberOfBytes LARGE_INTEGER,指定一个变量,用于容纳磁盘上的总字节数
lpTotalNumberOfFreeBytes LARGE_INTEGER,指定一个变量,用于容纳磁盘上可用的字节数
适用平台
Windows 95 OSR2,Windows NT 4.0

⑨ Linux下如何用C语言获取硬盘使用情况

system(执行shell命令)相关函数fork,execve,waitpid,popen表头文件#include定义函数intsystem(constchar*string);函数说明system()会调用fork()产生子进程,由子进程来调用/bin/sh-cstring来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD信号会被暂时搁置,SIGINT和SIGQUIT信号则会被忽略。返回值如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),则返回非零值。如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为system()调用/bin/sh失败所返回的127,因此最好能再检查errno来确认执行成功。附加说明在编写具有SUID/SGID权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题。

热点内容
c语言学生成绩查询系统 发布:2025-05-14 22:58:30 浏览:4
怎么进别人的服务器 发布:2025-05-14 22:45:55 浏览:772
用编程写音乐 发布:2025-05-14 22:45:08 浏览:782
如何识别电脑的网络配置 发布:2025-05-14 22:38:46 浏览:847
pipforpython3 发布:2025-05-14 22:38:34 浏览:350
如何把迷你世界的服务器搞崩 发布:2025-05-14 22:37:15 浏览:94
如何让安卓卡死机 发布:2025-05-14 22:36:27 浏览:634
wemall微商城源码 发布:2025-05-14 22:15:20 浏览:804
隆地优选交易密码是什么 发布:2025-05-14 21:53:23 浏览:97
强酸强碱存储柜 发布:2025-05-14 21:45:16 浏览:565