【发布时间】:2011-11-10 00:45:54
【问题描述】:
我的 C 程序中的 chdir() 出现问题 - 仅在 Linux 上运行时(在 Mac 上运行良好)。我已经剥离了我的代码。
这样的东西很好用:
chdir("/Documents");
但是当我尝试将它作为变量传递时,它不想工作。
char *home_directory;
home_directory = malloc(80);
chdir(home_directory);
主目录是从我代码中其他地方的文件中读取的,如果需要,我可以发布我是如何做到的。
谢谢。
【问题讨论】:
-
“它不想工作”是您向同行准确表达技术理念的最佳证明吗?
-
(1) 贴出填码
home_directory。 (2) 在 Linux 上实际失败的原因是什么? -
我希望您读取
malloc和chdir之间的主目录?您确定路径 79 个字符就足够了吗? -
您应该检查
chdir()返回的内容以及之后errno的设置(无论如何,您的程序都应该以这种方式处理错误)。perror()将显示一条人类可读的错误消息。我假设您在调用chdir()之前已经检查了值home_directory。 -
您作为参数传递的变量的内容肯定是错误的。请在上面代码中的 chdir 之前尝试
strcpy(home_directory, "/Documents");。