C语言 获取磁盘可用空间

 我来答
匿名用户
推荐于2017-09-14
展开全部
给,在VC6上已经编译运行确认:

/*
* 获取硬盘分区序列号
* chen.brick@gmail.com 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);
}
金鱼8884
2015-10-30 · 知道合伙人数码行家
金鱼8884
知道合伙人数码行家
采纳数:124 获赞数:14951
学生

向TA提问 私信TA
展开全部
给,在VC6上已经编译运行确认:

/*
* 获取硬盘分区序列号
* chen.brick@gmail.com 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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千锋教育
2015-12-08 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部

核心代码片断:

ULARGE_INTEGER FreeBytesAvailable,TotalNumberOfBytes,TotalNumberOfFreeBytes;
GetDiskFreeSpaceEx(_T("E:"),&FreeBytesAvailable,&TotalNumberOfBytes,&TotalNumberOfFreeBytes);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-08-26
展开全部
#include <dos.h>
#include <stdio.h>

int main(void)
{
struct dfree dfree;
getdfree(2, &dfree);

printf("%ld", (long)df_avail * df_bsec * df_sclus);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天河流纹石
2009-08-26 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7624
采纳率:76%
帮助的人:4124万
展开全部
用 GetDiskFreeSpace 函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式