void show_dir() /* 显示当前目录的文件列表 */ { int i; printf("文件名\t\t文件类型\t文件长度\n"); for(i=0;i<64;i++) // 循环64次,查找当前目录下的文件 { if(strcmp(cur_dir,c[i].dir_name)==0) // 如果文件所在目录与当前目录相同 { printf("%s\t\t%s\t\t%d\n",c[i].file_name,i_node[c[i].i_num].file_style==1?"文本文件":"二进制文件",i_node[c[i].i_num].file_length); // 输出文件信息 } } }

void change_dir(char filename[]) /* 切换目录 */ { int i; for(i=0;i<64;i++) // 循环64次,查找目录是否存在 { if(strcmp(filename,c[i].file_name)==0&&i_node[c[i].i_num].file_style==0) // 如果找到目录 { strcpy(cur_dir,filename); // 将当前目录设置为目标目录 return; // 返回 } } printf("目录不存在\n"); // 输出错误信息 }

void delete_file(char filename[]) /* 删除文件 */ { int i,j,k; for(i=0;i<64;i++) // 循环64次,查找文件是否存在 { if(strcmp(filename,c[i].file_name)==0&&strcmp(cur_dir,c[i].dir_name)==0) // 如果找到文件 { k=c[i].i_num; // 获取文件的i节点号 callback(i_node[k].file_length); // 回收磁盘空间 i_node[k].file_style=-1; // 将文件类型设置为-1,表示该i节点未被使用 i_node[k].file_length=-1; // 将文件长度设置为-1,表示该i节点未被使用 for(j=0;j<100;j++) // 循环100次,将文件的物理地址清空 { i_node[k].file_address[j]=-1; } strcpy(c[i].file_name,""); // 将文件名清空 c[i].i_num=-1; // 将文件的i节点号设置为-1,表示该目录项未被使用 strcpy(c[i].dir_name,""); // 将文件所在目录名清空 return; // 返回 } } printf("文件不存在\n"); // 输出错误信息 }

void main() /* 主函数 */ { int i; char command[10],filename[10]; FILE *fp; cmd[0].com[0]='f';cmd[0].com[1]='o';cmd[0].com[2]='r';cmd[0].com[3]='m';cmd[0].com[4]='a';cmd[0].com[5]='t';cmd[0].com[6]='\0'; cmd[1].com[0]='c';cmd[1].com[1]='r';cmd[1].com[2]='e';cmd[1].com[3]='a';cmd[1].com[4]='t';cmd[1].com[5]='e';cmd[1].com[6]='\0'; cmd[2].com[0]='d';cmd[2].com[1]='e';cmd[2].com[2]='l';cmd[2].com[3]='e';cmd[2].com[4]='t';cmd[2].com[5]='e';cmd[2].com[6]='\0'; cmd[3].com[0]='s';cmd[3].com[1]='h';cmd[3].com[2]='o';cmd[3].com[3]='w';cmd[3].com[4]='d';cmd[3].com[5]='i';cmd[3].com[6]='r';cmd[3].com[7]='\0'; cmd[4].com[0]='c';cmd[4].com[1]='h';cmd[4].com[2]='a';cmd[4].com[3]='n';cmd[4].com[4]='g';cmd[4].com[5]='e';cmd[4].com[6]='d';cmd[4].com

C语言模拟UNIX文件系统:深入解析磁盘空间管理与文件操作

原文地址: https://www.cveoy.top/t/topic/f2sb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录