int item = curDir->directItem[cur].firstDisk;//目标文件的起始磁盘块号 while (fat[item].item != -1)item = fat[item].item;//计算保存该文件的最后一块盘块号 char* first = fdisk + item * DISK_SIZE + fSize % DISK_SIZE;//计算该文件的末地址
时间: 2024-04-23 21:23:35 浏览: 68
这段代码的作用是计算目标文件的末地址,具体操作如下:
首先,从目录项中获取目标文件的起始磁盘块号,赋值给变量item。
然后,利用while循环计算保存该文件的最后一块盘块号,即最后一块磁盘块的盘块号。具体操作和上一个问题中的解释一样,不再赘述。
接着,利用fSize%DISK_SIZE计算出目标文件在最后一块盘块中的偏移量,即该文件的末地址在最后一块盘块中的起始位置。
最后,根据最后一块盘块的盘块号和该文件在最后一块盘块中的偏移量,计算文件的末地址,即fdisk + item * DISK_SIZE + fSize % DISK_SIZE。
最终,该代码返回的是目标文件的末地址。
相关问题
//指向上一级目录的目录项 cur_mkdir->directItem[1].sign = curDir->directItem[0].sign; cur_mkdir->directItem[1].firstDisk = curDir->directItem[0].firstDisk; strcpy(cur_mkdir->directItem[1].fileName, ".."); cur_mkdir->directItem[1].next = cur_mkdir->directItem[1].firstDisk; cur_mkdir->directItem[1].type = 1; cur_mkdir->directItem[1].size = USER_ROOT_SIZE;
这段代码是在创建一个新目录时,设置该目录的 ".." 目录项的信息。具体来说,它做了以下几件事情:
1. 将新目录的第二个目录项(即 ".." 目录项)的 sign 值设置为当前目录的第一个目录项(即 "." 目录项)的 sign 值,表示该目录项已经被占用。
2. 将新目录的第二个目录项(即 ".." 目录项)的 firstDisk 值设置为当前目录的第一个目录项(即 "." 目录项)的 firstDisk 值,即为当前目录的起始磁盘号。
3. 将新目录的第二个目录项(即 ".." 目录项)的 fileName 值设置为 "..",表示该目录是上一级目录。
4. 将新目录的第二个目录项(即 ".." 目录项)的 next 值设置为该目录的起始磁盘号。
5. 将新目录的第二个目录项(即 ".." 目录项)的 type 值设置为 1,表示该目录项是一个目录。
6. 将新目录的第二个目录项(即 ".." 目录项)的 size 值设置为 USER_ROOT_SIZE,表示该目录的大小为 USER_ROOT_SIZE 个字节。
这样就完成了新目录的初始化工作,并且设置了该目录的 ".." 目录项的信息。
//指向当前目录的目录项 cur_mkdir->directItem[0].sign = 0; cur_mkdir->directItem[0].firstDisk = curDir->directItem[i].firstDisk; strcpy(cur_mkdir->directItem[0].fileName, "."); cur_mkdir->directItem[0].next = cur_mkdir->directItem[0].firstDisk; cur_mkdir->directItem[0].type = 1; cur_mkdir->directItem[0].size = USER_ROOT_SIZE;
这段代码是在创建一个新目录时,设置该目录的 "." 目录项的信息。具体来说,它做了以下几件事情:
1. 将新目录的第一个目录项(即 "." 目录项)的 sign 值置为 0,表示该目录项已经被占用。
2. 将新目录的第一个目录项(即 "." 目录项)的 firstDisk 值设置为该目录的起始磁盘号。
3. 将新目录的第一个目录项(即 "." 目录项)的 fileName 值设置为 ".",表示该目录是自身的父目录。
4. 将新目录的第一个目录项(即 "." 目录项)的 next 值设置为该目录的起始磁盘号。
5. 将新目录的第一个目录项(即 "." 目录项)的 type 值设置为 1,表示该目录项是一个目录。
6. 将新目录的第一个目录项(即 "." 目录项)的 size 值设置为 USER_ROOT_SIZE,表示该目录的大小为 USER_ROOT_SIZE 个字节。
这样就完成了新目录的初始化工作,并且设置了该目录的 "." 目录项的信息。
阅读全文