a和b当字符串用,但却没有写字符串结束符
在最后printf之前,加上b[t] = 0;
供参考:
char* command[] = {"create_filesystem","init","low_init","info","mkfile","weishitu","delfile","deldir","help","ls","quit"};
int commandnum = sizeof(command)/sizeof(char *);
char path[100] = "file_system";//文件系统
while(1){
printf("%s$ ",path);
scanf("%s",com);
choice = i;
for(i=0; i<commandnum; ++i)
if(strcmp(com,command[i])==0)
break;
choice = i;
if(Disk == -1 && (!(choice == 0|| choice == 10))){//未创建文件只能退出或者创建文件
printf("文件系统未创建,请创建文件系统。");
continue;
}
int a;
read(Disk,&a,sizeof(int));
if(Disk != -1 &&a == 0 && !(choice == 1 || choice == 2)){
printf("未格式化,请格式化.");
lseek(Disk,-sizeof(int),SEEK_CUR);
continue;
}
lseek(Disk,-sizeof(int),SEEK_CUR);
switch(choice){
case 0://创建系统
create_filesystem();
break;
case 1://格式化
init(1);
break;
case 2://低级格式化
low_init();
break;
case 3://查看信息
info();
break;
case 4://创建文件
printf("输入你要创建的文件名: ");
char filename[20];
scanf("%s",filename);
create_file(filename);
break;
case 5://查看位示图
weishi();
break;
case 6://删除文件
printf("请输入你要删除的文件:");
char delname[20];
scanf("%s",delname);
delfile(delname);
break;
case 8://帮助信息
help();
break;
case 9://显示文件
ls();
break;
case 10: //退出系统
quit = 1;
break;
default:
printf("%s command not found\n",com);
}
很显然,我定义了一个while1,然后根据输入命令的比较结果来选择执行哪个分支,默认就是重新回到开头。在程序运行的时候我已经做了打开文件的操作,因为我第超级块的前4个字节的数据是固定的不为0,所以我可以用它来判断是否已经格式化,然后其它的就是跳转到相应的功能中就好了0.0
这只是基础程序框架,我们其它功能使用另外一个文件来实现