我尝试过使用chdir和cd但是运行了dir 但都显示了我所在的文件夹/项目文件夹的目录。 以下是源代码
system("chdir (C:/)");
system("dir");
和这个
system("chdir C:/");
system("dir");
和这个
system("cd C:/");
system("dir");
答案 0 :(得分:3)
您可以使用Posix chdir
函数更改目录,然后使用Posix opendir
,readdir
和closedir
方法来枚举目录的内容。
这两个问题之前都已经涉及过。请参阅:
答案 1 :(得分:3)
通过调用system(),您将创建一个子流程,该流程将更改目录,但不会更改当前流程工作目录。
尝试调用chdir函数,因为这篇文章建议:Change the current working directory in C++
答案 2 :(得分:1)
我认为您不应该使用system()
因为它会使您编程为非便携式。 (dir并不存在于Linux上,例如)
您可以使用opendir和readdir来打开目录并列出其中包含的文件。
这是一个简单的例子:
DIR *dp;
struct dirent *dptr;
if(NULL == (dp = opendir("C:")) )
{
perror("Opendir");
exit(EXIT_FAILURE);
}
else
{
while(NULL != (dptr = readdir(dp)) )
{
printf("%s ",dptr->d_name);
}
closedir(dp);
}
答案 3 :(得分:0)
AFAIK,通过调用system()
函数调用,它将通过调用command
执行/bin/sh -c
并返回退出状态。下一次调用system()
将调用另一个/bin/sh -c
。
因此,基本上,对于每个调用,都会使用一个新的子 shell。因此,您不能指望在第二次调用中保留第一个调用的结果[ persistent ]。您当前的进程目录将不受到影响。下一次调用system()
将考虑旧当前进程目录本身。
您可以尝试通过与system()
或&&
;
来同时提供要执行的命令。