VC 获取磁盘盘符剩余空间,CJSON格式输出

本文介绍了一个C语言函数,用于获取计算机上各磁盘分区的总空间和剩余空间,并使用cJSON库将数据转换为JSON格式输出。通过遍历所有可用的磁盘驱动器,函数调用GetDiskFreeSpaceEx函数来获取每个驱动器的磁盘信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void  GetPlace(char  *datajson)
{
    ULARGE_INTEGER nFreeBytesAvailable;
    ULARGE_INTEGER nTotalNumberOfBytes;
    ULARGE_INTEGER nTotalNumberOfFreeBytes;
    DWORD  msg = 1;
    DWORD statue  = 0;
    WCHAR Drive[MAX_PATH] = {0};
     char ch[3] = "c";
    char FreePlace[1024] =  {0};
    char TotalPlace[1024] = {0};
    GetLogicalDriveStrings(MAX_PATH, Drive);
    wstring myDrive = L"";
    int i = 0;
    cJSON *root = cJSON_CreateObject();
    cJSON *FreeP = cJSON_CreateArray();
    cJSON *TotalP = cJSON_CreateArray();
    
    while (Drive[i] != '\0' || Drive[i+1] != '\0')//搜索数组尝试得到盘符信息
    {
        myDrive = Drive[i];
        myDrive = myDrive + L":";
        i+= 4;
        msg  = GetDiskFreeSpaceEx(myDrive.c_str(),&nFreeBytesAvailable,&nTotalNumberOfBytes,&nTotalNumberOfFreeBytes);
        statue = GetLastError();
        if (msg)
        {
            cJSON *tempF = cJSON_CreateObject();
            cJSON *tempT = cJSON_CreateObject();
            double Totalspace = nTotalNumberOfBytes.QuadPart/1024./1024./1024.;//得到磁盘总空间,单位为G
            char get_Totalfree[50] = {0};
            sprintf(get_Totalfree,"%.2lf",Totalspace);
            cJSON_AddItemToObject(tempF,"disk",cJSON_CreateString(ch));
            cJSON_AddItemToObject(tempF,"vale",cJSON_CreateString(get_Totalfree));
            cJSON_AddItemToArray(FreeP,tempF);
            double Freespace = nTotalNumberOfFreeBytes.QuadPart/1024./1024./1024.;//得到磁盘剩余空间,单位为G        
            char get_free[50] = {0};
            sprintf(get_free,"%.2lf",Freespace);        
            cJSON_AddItemToObject(tempT,"disk",cJSON_CreateString(ch));
            cJSON_AddItemToObject(tempT,"vale",cJSON_CreateString(get_free));        
            cJSON_AddItemToArray(TotalP,tempT);
        }
                ch[0]++;
    }
    char GetMsg[3] ={0};
    sprintf(GetMsg,"%d",msg);
    cJSON_AddNumberToObject(root,"status:",statue);
    cJSON_AddStringToObject(root,"GetDiskMsg",GetMsg);

    cJSON_AddItemToObject(root,"FreePlace",FreeP);
    cJSON_AddItemToObject(root,"TotalPlace",TotalP);
    char getdataF[1024] = {0};
    strcpy(datajson ,cJSON_PrintUnformatted(root));
    cJSON_Delete(root);
    //cJSON_Print(root));
}

///////////////////////////////////////

输出:

{
        "status:":      0,
        "GetDiskMsg":   "1",
        "FreePlace":    [{
                        "disk": "c",
                        "vale": "80.00"
                }, {
                        "disk": "d",
                        "vale": "80.00"
                }, {
                        "disk": "e",
                        "vale": "80.00"
                }, {
                        "disk": "f",
                        "vale": "95.51"
                }],
        "TotalPlace":   [{
                        "disk": "c",
                        "vale": "22.71"
                }, {
                        "disk": "d",
                        "vale": "0.29"
                }, {
                        "disk": "e",
                        "vale": "1.65"
                }, {
                        "disk": "f",
                        "vale": "2.93"
                }]
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值