fdisk = new char[MEM_SIZE*sizeof(char)];//申请磁盘空间 //初始化FAT表 fat = (FAT)(fdisk + DISK_SIZE);//fat地址 fat[0].item = -1; fat[0].state = 1;//初始化FAT表 for (int i = 1; i < USER_ROOT_STARTBLOCK - 1; i++) { fat[i].item = i + 1;//指针 fat[i].state = 1; } fat[USER_ROOT_STARTBLOCK].item = -1; fat[USER_ROOT_STARTBLOCK].state = 1;//根目录磁盘块号 //fat其他块初始化 for (int i = USER_ROOT_STARTBLOCK + 1; i < DISK_NUM; i++) { fat[i].item = -1; fat[i].state = 0; } //根目录初始化 root = (struct direct*)(fdisk + DISK_SIZE + FATSIZE);//根目录地址 root->directItem[0].sign = 1; root->directItem[0].firstDisk = USER_ROOT_STARTBLOCK; strcpy(root->directItem[0].fileName , "."); root->directItem[0].next = root->directItem[0].firstDisk; root->directItem[0].type = 1; root->directItem[0].size = USER_ROOT_SIZE; //父目录初始化 root->directItem[1].sign = 1; root->directItem[1].firstDisk = USER_ROOT_STARTBLOCK; strcpy(root->directItem[1].fileName, ".."); root->directItem[1].next = root->directItem[0].firstDisk; root->directItem[1].type = 1; root->directItem[1].size = USER_ROOT_SIZE; //子目录初始化 for (int i = 2; i < MSD+2; i++) { root->directItem[i].sign = 0; root->directItem[i].firstDisk = -1; strcpy(root->directItem[i].fileName,""); root->directItem[i].next = -1; root->directItem[i].type = 0; root->directItem[i].size = 0; } if (!save())cout << "初始化失败!" << endl;作用
时间: 2024-04-24 07:22:51 浏览: 110
fat32文件C语言的实现13.rar_FAT32 C source code_fat_fat32_fdisk_nandflas
这段代码是用来初始化文件系统的。它包括以下几个步骤:
1. 分配磁盘空间;
2. 初始化FAT表,设置所有磁盘块的指针和状态;
3. 初始化根目录,包括"."和".."两个目录项,以及其他空闲目录项;
4. 最后将初始化后的文件系统保存到磁盘上。
这段代码的目的是为了让文件系统处于一个可用的状态,为用户提供文件管理服务。
阅读全文