如何使用c程序更改目录并显示其目录

时间:2014-12-24 14:01:51

标签: c directory

我尝试过使用chdir和cd但是运行了dir 但都显示了我所在的文件夹/项目文件夹的目录。 以下是源代码

system("chdir (C:/)");
system("dir");

和这个

system("chdir C:/");
system("dir");

和这个

system("cd C:/");
system("dir");

4 个答案:

答案 0 :(得分:3)

您可以使用Posix chdir函数更改目录,然后使用Posix opendirreaddirclosedir方法来枚举目录的内容。

这两个问题之前都已经涉及过。请参阅:

Change current working directory C

How do you get a directory listing in C?

答案 1 :(得分:3)

通过调用system(),您将创建一个子流程,该流程将更改目录,但不会更改当前流程工作目录。

尝试调用chdir函数,因为这篇文章建议:Change the current working directory in C++

答案 2 :(得分:1)

我认为您不应该使用system()因为它会使您编程为非便携式。 (dir并不存在于Linux上,例如)

您可以使用opendirreaddir来打开目录并列出其中包含的文件。

这是一个简单的例子:

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()&&

加入;来同时提供要执行的命令。