易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux查看硬盘大小,用C/C++程序写。

各位,我有如下代码:
struct statfs diskStatfs;
statfs("/", &diskStatfs);

long iTotalCapacity = diskStatfs.f_blocks * (diskStatfs.f_bsize / (1024 * 1024)); (Mb)
long iFreeCapacity = diskStatfs.f_bfree * (diskStatfs.f_bsize / (1024 * 1024)); (Mb)

我想获得系统的整个硬盘大小以及剩余的硬盘大小,可输出的结果都是0。是不是越界了,如果是该怎么改进?
或者有没有更好的方法。

请高手指教,谢谢。
system("fdisk -l");

使用系统提供的shell命令,呵呵...

楼上能否说的详细点,谢谢。
如果用system("fdisk -l"); 我怎样得到结果?


要么你就用浮点数。
整数除法就是这样,小的除大的,结果就是0。

long iTotalCapacity = diskStatfs.f_blocks * diskStatfs.f_bsize / (double)(1024 * 1024); (Mb)
long iFreeCapacity = diskStatfs.f_bfree * diskStatfs.f_bsize / (double)(1024 * 1024); (Mb)

用你这种方法求,结果不是很准,我这样做过,得出的值与实际容量有很大差距。你可以试试、、、我也没有好的解决方法、、、、期待中、、、

是的,得出的结果第一个只有258M。应该是不准的吧。

用 long long  试试,我怀疑是越界、、、、

引用
用 long long  试试,我怀疑是越界、、、、

哈哈 我说错了

呀,那样的话就溢出了,你可能得用long long。

现在值倒是有了,可我总感觉不太对。硬盘哪会这么小呢,iTotalCapacity = 258M,iFreeCapacity = 80M
我用df


相关问答:

一个简单的c游戏

13个人围成一圈,从第一个人开始顺序报号1,2,3。凡报到3者退出圈子,找出最后留在圈子中的人原来的序号
结果应该是13 可我的程序的结果是11 希望好心人帮改一下
#include <stdio.h>
#include < ......

菜鸟求解:c图形问题

#include <stdio.h>
#include <graphics.h>
void main()
{
  int x0,y0,x1,y1,driver,mode,i;
  driver=VGA;
  mode=VGAHI;
  initgraph(&driver,&mode,&qu ......

C 程序问题 (二) - C/C++ / C语言

问一下:
#include <stdio.h>
int main()
{
  char x, y, z;
  int i;
  int a[16];
  for(i=0; i<=16; i++)
  {
  a[i] = 0;
  ......

使用C的高手请进

大家好!我是一位C爱好者,向大家请教下,C程序员可好找工作?公司用C干些什么?
无所谓好不好找工作,一般通信、系统、嵌入式、硬件方面用的多,而且由于C的底层特性,学会后在学其他的会比较容易

不管用什么语 ......

大家觉得 C Primer Plus 这本书怎么样呢?

用这本书入门怎么样呢  跟谭浩强的相比如何? 谢谢
我把这本看了几篇,确实很好的书。就不要拿它跟 谭 的书比了, 谭 的书要照顾全国读者。

不可同日而语

一个是国外的,一个是国内的

学完c primer ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号