我目前在系统软件类中,我们必须实现具有分层目录结构的类UNIX环境和文件系统。文件系统应该存储在主存储器中,并允许用户浏览目录结构,创建和删除文件和目录等。
所以这是我到目前为止的代码:
int main(int argc, char *argv[]){
char cmd[50];
const char spc[50] = " ";
char *file, *dir;
char *tok;
while(1){
printf("Russ_John_Shell> ");
fgets(cmd, 50, stdin);
tok = strtok(cmd, spc);
if (strcmp(tok, "cd") == 0){
changeDir(cmd);
} else if (strcmp(cmd, "ls") == 0){
listDir(cmd);
} else if (strcmp(cmd, "mkdir") == 0){
makeDir(cmd);
} else if (strcmp(cmd, "mkfs") == 0){
makeFS(cmd);
} else if (strcmp(cmd, "rmdir") == 0){
remDir(cmd);
} else if (strcmp(cmd, "stat") == 0){
status(cmd);
} else if (strcmp(cmd, "mkfile") == 0){
makeFile(cmd);
} else if (strcmp(cmd, "rmfile") == 0){
remFile(cmd);
} else if (strcmp(cmd, "exit") == 0){
exitShell(cmd);
} else {
printf("Command not recognized.\n");
}
}
printf("%s","BYE BYE \n");
}
尝试编译时,它说
assignment makes pointer from integer without a cast [enabled by default]
tok = strtok(cmd, spc);
我并不完全确定是什么问题。
如果我没有弄错,我应该解析输入以在开头读取命令,然后如果该命令需要文件/目录,也解析该部分字符串。这段代码有什么问题,我该如何解决这个问题?任何帮助都可以。感谢。
编辑:所以我的问题是我没有#include <string.h>
。但现在,我希望程序知道命令之间的区别。例如,ls
不需要文件名或目录,而mkdir
则需要目录名称。 if语句是否足够?如果是这样,我将如何实施?