【发布时间】:2016-01-24 10:04:49
【问题描述】:
我无法在 C 中操作目录。
- 我想将 2 个目录的名称作为 main 的参数
- 检查第一个目录是否存在(在当前路径中)
- 打开目录
- 调用一个函数(我创建的)来创建文件并在里面做一些事情 目录
- 关闭目录并进入第二个目录并执行相同操作。
我写了我的代码,但它仍然没有做我在 main 上提供的目录中的东西,而是看起来我总是定位在当前目录中,所以打开目录的调用不是很好???
这是我所做的:
int main(int argc, char *argv[])
{
int i = 0;
char cwd[1024];
if(argc < 3)
{
printf("Erreur dans les arguments\n");
} else
{
for(i = 1; i < argc; i++)
{
if (getcwd(cwd, sizeof(cwd)) == NULL)
{
printf("an error occured when getting current directory\n");
}
// make a path to the directory
strcat(cwd, "/");
strcat(cwd, argv[i]);
strcat(cwd, "/");
printf("cwd %s\n", cwd);
//check if directory exist and readable
//if((rep = opendir(argv[i])) != NULL) not working also
if((rep = opendir(cwd)) != NULL)
{
getcwd(cwd, sizeof(cwd));
printf("cwd %s\n", cwd);
// do some stuff on the directory
//int result = createFile("file.txt"); // this function works fine but the file is always created in the current directory
}
}
}
}
如果有人可以提供帮助,我们将不胜感激。谢谢你。
【问题讨论】:
-
@chux 此代码中没有可见声明。
-
@chux 和ameyCU 对不起,这是我制作的一个大程序的一部分,我不想把所有的程序都放在这里,这就是为什么我忘记了圆珠笔,我是真对不起。我编辑了问题。
-
您只需调用
getcwd()一次,除非您使用chdir()更改目录。您不需要为getcwd()的值添加前缀;您可以使用.来表示当前目录。或者您可以简单地使用未更改的名称;用户可以选择输入绝对名称(以/开头)或相对名称(不以/开头)。这提供了最佳的灵活性。 -
@JonathanLeffler 我想要的只是进入我在 argv 中指定的目录(它必须存在于当前目录中)并在那里做我的事情,而不是关闭它并对下一个 argv 做同样的事情...但我做不到,我正在尝试但没有结果>.