资源简介

课程设计:开辟一个20M的磁盘空间(20M文件)作为一个磁盘,按照linux位视图的方式管理,可以创建文件,写数据,读取数据等

资源截图

代码片段和文件信息

////////////////////////////////////////////////////
//  time:2012-03-17
//author:think
//      implement the function FILE* searchEmptyBlockFromData(FILE* fp)
//
//  time:2012-03-17
//author:think
//      implement the function int releaseBlock(unsigned char bitPic[10][256] int position)
////////////////////////////////////////////////////

#include 
#include “data.h“

//从数据块中找到一个空闲块,返回指针
short int searchEmptyBlock(unsigned char bitPic[10][256])
{
        int i = 0;
        int j = 0;
        for (i = 0; i < 10; i++)
        {
                for (j = 0; j < 256; j++)
                {
                        if (bitPic[i][j] < 255)                 //如果 小于 255,说明 此char型代表的数据块中有空闲的
                        {
                                int k = 0;
                                unsigned char temp = 0X80;      //0X80 换成二进制是 1000 0000,根据二进制的与  可以判断第一位是否为 0
                                for (k = 0; k < 8; k++)
                                {
                                        if ((bitPic[i][j] & temp) == 0)           //如果当前位为0 ,返回位置,
                                        {
                                                bitPic[i][j] = bitPic[i][j] | temp;
                                                return i * 256 + j * 8 + k;
                                        }
                                        else                                    //否则,temp 右移一位 ,判断下一位
                                        {
                                                temp = temp >> 1;
                                        }
                                }
                        }
                }
        }

        return -1;
}

//从数据块中释放一个块,
int releaseBlock(unsigned char bitPic[10][256] int position)
{
        int x = 0 y = 0 z = 0;
        z = position / (256 * 8);               //求 二维数组中的 第二维坐标
        y = (position % (256 * 8));
        x = y % 8;                              //求在某个字符中的位置
        y = y / 8;                              //求在二维数组 第一维中的位置

        int i = 0 temp = 0X80;
        for (i = 0; i < x; i++)                 //根据要释放的块在 字符中的位置  改变temp二进制形式中 1位的位置
        {
                temp = temp >> 1;
        }

        if ((bitPic[z][y] & temp) != 0)
        {
                bitPic[z][y] = bitPic[z][y] & (~temp);  //将 temp 取反,再与 对应字符相与 ,可以将对应位 赋值为 0
                return 1;
        }
        else
        {
                return 0;
        }
        return 0;
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件   20971520  2012-04-02 22:40  fileSystem\123.dat

     文件       2698  2012-03-17 22:59  fileSystem\data.cpp

     文件        842  2012-03-17 22:59  fileSystem\data.h

     文件       1638  2012-03-17 23:12  fileSystem\d_node.cpp

     文件       1157  2012-03-17 22:59  fileSystem\d_node.h

     文件       5248  2012-03-17 23:37  fileSystem\fileSystem.dsp

     文件        545  2012-03-17 22:55  fileSystem\fileSystem.dsw

     文件      74752  2012-04-02 22:51  fileSystem\fileSystem.ncb

     文件      49664  2012-04-02 22:51  fileSystem\fileSystem.opt

     文件        254  2012-04-02 22:40  fileSystem\fileSystem.plg

     文件      25957  2012-03-17 23:32  fileSystem\fileSystemFunction.cpp

     文件       2748  2012-03-17 23:08  fileSystem\fileSystemFunction.h

     文件       8511  2012-04-02 22:51  fileSystem\fileSystemInit.cpp

     文件        401  2012-03-17 22:59  fileSystem\fileSystemInit.h

     文件        203  2012-03-17 23:03  fileSystem\fileSystemNode.cpp

     文件        891  2012-03-17 23:03  fileSystem\fileSystemNode.h

     文件        958  2012-03-17 23:11  fileSystem\i_node.cpp

     文件        651  2012-03-17 23:02  fileSystem\i_node.h

     文件        812  2012-03-17 23:26  fileSystem\main.cpp

     文件       5186  2012-03-17 23:27  fileSystem\public.cpp

     文件        762  2012-03-17 23:03  fileSystem\public.h

     目录          0  2013-04-09 21:14  fileSystem

----------- ---------  ---------- -----  ----

             21155398                    22


评论

共有 条评论