需要解析字符串的输入

时间:2016-11-17 02:45:16

标签: c string shell parsing filesystems

我目前在系统软件类中,我们必须实现具有分层目录结构的类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语句是否足够?如果是这样,我将如何实施?

0 个答案:

没有答案