[求助]计算磁盘的剩余空间出错

UINT8 i; i = CH375DiskQuery( ); mStopIfError( i ); i = CH375DiskSize( ); mStopIfError( i ); #ifdef DEBUG printf("The Free sec is :%u,%u,%u\n",CH375vSectorSize,mCmdParam.DiskSize.mDiskSizeSec,mCmdParam.Query.mFreeSector); #endif return((unsigned int)(mCmdParam.DiskSize.mDiskSizeSec*mCmdParam.Query.mFreeSector /1024/1024)); // 返回为以MB为单位的剩余容量

结果显示为The Free sec is :512,53503,31 计算得到的剩余空间为The Free Size is :3429M 我的U盘才1G的啊! 不知道错在什么地方了,是不是我的函数用错了?

你的输出格式不对,比如1G的U盘,扇区数大概2097152个,你用,%u打印显然会益出,应该用%l,所以mFreeSector打印也可能出现这个问题!(要看你实际的剩余扇区数) 一般来说不要用(unsigned int)(mCmdParam.DiskSize.mDiskSizeSec*mCmdParam.Query.mFreeSector /1024/1024)来计算,因为mCmdParam.DiskSize.mDiskSizeSec*mCmdParam.Query.mFreeSector可能为益出. 这样计算: (mCmdParam.DiskSize.mDiskSizeSec*(mCmdParam.Query.mFreeSector/512) /2048)


只有登录才能回复,可以选择微信账号登录