管理文件和文件夹C

rta7y2nd  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(98)

我需要在C程序中使用目录...目录将是一个参数,我需要检查文件夹中的所有文件,如果其中一个文件是文件夹,我需要访问它,而且,我需要返回目录,即“.”和“.."。
我正在使用库<dirent.h>,现在我只能显示运行程序的文件夹中的所有内容(即program.c,folder1等)。如果我使用类似“Desktop”的参数,它将显示错误消息:
无法打开目录:没有这样的文件或目录。
你能告诉我该怎么做吗?

#include <dirent.h>
#include <stdio.h>

int main(int argc, char *argv[]){
    DIR *dp;
    struct dirent *ep;     

    dp = opendir (argv[1]);
    if (dp != NULL){
        while (ep = readdir (dp))
        puts (ep->d_name);

        (void) closedir (dp);

        perror ("Couldn't open the directory");
    }
    return 0;
}

字符串
范例:

xx@xfx  gcc e.c -o hola
xx@xfx ~/Desktop $ ./hola ./

hola
10475718_921955664486299_2309306989404354546_n.jpg
practica 4.tar.gz
h.c
pro
two-type-of-programmers-funny-jokes.png
as.c
a.c
prac 4
hol
Pr.hs
ej.c
du.c
.
tar
thats-racist-gif-1.gif
pract.
pract.c
e.c
prac.c
pract.c
..
Lab files #2
ejer1.c
music.pls
Lab files  #4
ho2.c
dir2
ejero1.c
t
Mate
Couldn't open the directory: Success

5w9g7ksd

5w9g7ksd1#

看起来你的错误处理没有正确放置。perror函数是在if语句之外调用的,所以它总是会执行,不管目录是否成功打开。
下面是代码的修改版本,改进了错误处理:

#include <dirent.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
    if (argc != 2) {
        fprintf(stderr, "Usage: %s <directory>\n", argv[0]);
        return 1;
    }

    DIR *dp;
    struct dirent *ep;

    // Open the directory
    dp = opendir(argv[1]);
    if (dp != NULL) {
        // Read and display directory contents
        while ((ep = readdir(dp)) != NULL) {
            puts(ep->d_name);
        }

        // Close the directory
        (void)closedir(dp);
    } else {
        // Print an error message if the directory couldn't be opened
        perror("Couldn't open the directory");
        return 1;
    }

    return 0;
}

字符串

相关问题