我的cd函数没有进入主目录

时间:2016-09-27 05:08:05

标签: c shell cd

我在c中构建一个自定义shell,其中一个要求是运行程序时的文件夹必须是" home"文件夹中。

也就是说,如果您只需输入cdcd ~,就应该进入该目录。我已经实现了它,但它无法正常工作。

char *basedir;
void init_prompt()
{
    getcwd(cwd,100);
    basedir = cwd;
}
void cd_me(char **argv)
{
    chdir(argv[1]);
    if(getcwd(cwd,100)!=0)
    {
        ;
    }
    if(strcmp("~\0",argv[1])==0||strcmp("\0",argv[1])==0)
        chdir(basedir);
}

有关如何解决此问题的任何建议吗?

当我打印基础时,我得到了正确的输出。

1 个答案:

答案 0 :(得分:2)

 char *basedir;
 basedir = cwd;

您将basedir 同义词设为cwd。每当cwd更改时,basedir都会跟随。它是一个指针,它不记得自己的字符串,它只能指向别人的字符串。

您必须改为副本

 char basedir[100];
 strcpy(basedir,cwd);

根据需要添加边界检查和错误处理。