我的 cd 功能不转到主目录
My cd function does not go to the home directory
我正在用 c 构建自定义 shell,其中一个要求是您 运行 程序时的文件夹必须是 "home" 文件夹。
也就是说,如果您只输入 cd
或 cd ~
,您应该会进入该目录。我已经实现了,但是没有用。
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("~[=10=]",argv[1])==0||strcmp("[=10=]",argv[1])==0)
chdir(basedir);
}
关于如何解决这个问题有什么建议吗?
另外,当我打印 basedir 时,我得到了正确的输出。
char *basedir;
basedir = cwd;
您使 basedir
成为 cwd
的 同义词 。每当 cwd
改变时,basedir
随之改变。是一个指针,它记不住自己的字符串,只能指向别人的字符串。
您必须制作一个副本。
char basedir[100];
strcpy(basedir,cwd);
根据需要添加边界检查和错误处理。
我正在用 c 构建自定义 shell,其中一个要求是您 运行 程序时的文件夹必须是 "home" 文件夹。
也就是说,如果您只输入 cd
或 cd ~
,您应该会进入该目录。我已经实现了,但是没有用。
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("~[=10=]",argv[1])==0||strcmp("[=10=]",argv[1])==0)
chdir(basedir);
}
关于如何解决这个问题有什么建议吗?
另外,当我打印 basedir 时,我得到了正确的输出。
char *basedir;
basedir = cwd;
您使 basedir
成为 cwd
的 同义词 。每当 cwd
改变时,basedir
随之改变。是一个指针,它记不住自己的字符串,只能指向别人的字符串。
您必须制作一个副本。
char basedir[100];
strcpy(basedir,cwd);
根据需要添加边界检查和错误处理。