我需要在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
型
1条答案
按热度按时间5w9g7ksd1#
看起来你的错误处理没有正确放置。perror函数是在if语句之外调用的,所以它总是会执行,不管目录是否成功打开。
下面是代码的修改版本,改进了错误处理:
字符串