同学们在读完一本C语言参考书,能够做到C语言简单入门之后,往往有这样一种感觉:我知道用if语句可以表示条件选择,用for语句可以表示循环,我还知道如何写一个函数,也知道如何使用指针访问数据或者函数,可是我就是不知道如何用C语言解决现实生活中的实际问题:如何为寝室的下载狂人写一个磁盘剩余容量监视程序来监视磁盘,防止剩余容量不足?如何为他写一个个性化的下载程序,使之可以用命令行的方式灵活地下载文件?如何。。。 当我们掌握了C语言的基础知识后,但是却不知道如何运用,在遇到一些实际问题时,却感觉无从下手。这就是我们在C语言学习上的短板。
《C程序设计伴侣》将通过一系列生动有趣的,来自实际的例子,为大家补上这一课。让大家通过《C程序设计伴侣》的学习,不仅对C语言的语法知识有更加深入的理解,同时更知道如何运用这些知识,来解决实际生活中遇到的问题。
好了,现在就动手吧!
要解决这个问题,根据我们已经学过的知识,其实有这样一个简单的思路:这是一个监控程序,需要不断地检查磁盘剩余容量,所以主体上这是一个while(true)的无限循环:因为需要检查磁盘剩余容量,所以我们需要调用系统API得到系统的磁盘剩余容量,稍微google,就可以得到GetDiskFreeSpace()函数就是来做这件事的。最后,既然是检测,那就是当得到的剩余容量小于某个阀值时,提出警告,于是,这里需要用到条件语句对剩余容量进行判断,并采取不同的措施,如果满足剩余容量,这Sleep()一定时间后继续检查,如果不满足,则提出警告并结束整个循环。
按照上面的思路,我们可以将整个监控程序实现如下:
/* ============================================================================ diskCapacity1.c Created on : 2013年10月31日16:28:13 Author : Bruce Version : v1.0 Copyright : Your copyright notice Description : disk capacity in C, Ansi-style ============================================================================ */ #include <windows.h> #include <stdio.h> #include <stdbool.h> int main() { //开始无限循环,不断见识磁盘容量 while(true) { ULARGE_INTEGER space; //调用Windows API获得C盘的剩余容量 if(GetDiskFreeSpaceEx("C:",0,0,&space)) { //将剩余字节数转换为G(千兆字节)为单位 int free = space.QuadPart/(1024*1024*1024); //如果剩余字节数小于10千兆字节,则向用户报警,并用break关键字结束循环 if(free <10) { puts("WARNNING! The free space is less than 10G."); break; } //休眠10分钟(60*1000),开始下一次循环 Sleep(10*60*1000); } } return 0; }