gpt4 book ai didi

chdir() - 没有这样的文件或目录

转载 作者:太空狗 更新时间:2023-10-29 17:24:26 29 4
gpt4 key购买 nike

int main(int argc, char **argv)
{
char input[150];
char change[2] = "cd";
char *directory;

while(1) {
prompt();
fgets(input, 150, stdin);

if(strncmp(change, input, 2) == 0) {
directory = strtok(input, " ");
directory = strtok(NULL, " ");

printf(directory);
chdir(directory);
perror(directory);

}

if(feof(stdin) != 0 || input == NULL) {
printf("Auf Bald!\n");
exit(3);
}
}
}

当我启动它并输入“cd test”时,我得到“没有这样的文件或目录”。但是有目录“test”。

在 Arch Linux 上运行。

最佳答案

来自man page :

fgets() reads in at most one less than size characters from stream and stores them into the buffer pointed to by s. Reading stops after an EOF or a newline. If a newline is read, it is stored into the buffer.

问题是从 fgets() 获得的字符串末尾有一个换行符 '\n',您需要将其删除:

fgets(input, 150, stdin);
input[strlen(input)-1] = '\0';

还有:

char change[2] = "cd";

应该是 change[3],它是 2(代表“cd”)+ 1 代表 NULL 终止符 '\0',它是自动为您放置的。

那么它应该可以工作了。

编辑:

另一种方法是更改​​ strtok() 调用,这样:

directory = strtok(NULL, " \n");

如果用户通过回车键或通过 EOF(Linux 上的 ctrl + d)字符输入字符串,这将起作用...我不确定用户执行第二种操作的可能性有多大...但是不会痛的!

关于chdir() - 没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13591065/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com