我使用C语言打印两个目录中的文件。这是我的代码:
char *list1[30], *list2[30];
int i=0, x=0;
struct dirent *ent, *ent1;
/* print all the files and directories within directory */
while ((ent = readdir (dirSource)) != NULL) {
list1[i] = ent->d_name;
i++;
}
i=0;
while((ent1 = readdir (dirDest)) != NULL) {
list2[i] = ent1->d_name;
i++;
}
while(x != i){
printf("Daemon - %s\n", list1[x]);
printf("Daemon1 - %s\n", list2[x]);
x++;
}
我可以打印所有文件,但每次我在目录中打印文件时,最终结果如下:
守护进程 - 。 Daemon1 - 。 守护进程 - .. 守护进程1 - .. 守护进程 - fich5 Daemon1 - fich4 守护进程 - fich3 Daemon1 - fich3
我不明白为什么一开始就有点。 Obs。:我不知道是否重要,但我在笔上使用Ubuntu 14.04,这意味着每次使用Ubuntu时,我都会使用试用而不是在我的电脑上使用双启动。
答案 0 :(得分:4)
.
和..
是两个特殊文件,位于Linux和其他类Unix系统的每个目录中。 .
表示当前目录,..
表示父目录。
答案 1 :(得分:2)
Unix中的每个目录都有条目.
(表示当前目录)和..
(父目录)。
给它们以“。”开头。它们是隐藏文件;除非您使用“-a”选项,否则ls
通常不会显示它们。
见:
[:~/tmp/lilla/uff] % ls -l
total 0
-rw-rw-r-- 1 romano romano 0 May 17 18:48 a
-rw-rw-r-- 1 romano romano 0 May 17 18:48 b
[:~/tmp/lilla/uff] % ls -la
total 8
drwxrwxr-x 2 romano romano 4096 May 17 18:48 .
drwxrwxr-x 3 romano romano 4096 May 17 18:47 ..
-rw-rw-r-- 1 romano romano 0 May 17 18:48 a
-rw-rw-r-- 1 romano romano 0 May 17 18:48 b