【问题标题】:Why do dots ("." and "..") appear when I print files from directory?为什么打印目录中的文件时会出现点(“.”和“..”)?
【发布时间】:2014-07-06 05:15:34
【问题描述】:

我正在使用 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++;
    }

我可以打印所有文件,但是每次打印目录中的文件,最终结果是这样的:

守护进程 - . 守护进程1 - . 守护进程 - .. 守护进程1 - .. 守护进程 - fich5 守护进程1 - fich4 守护进程 - fich3 Daemon1 - fich3

我不明白为什么开头有点。 Obs.:我不关心,但我在笔上使用 Ubuntu 14.04,这意味着每次我使用 Ubuntu 时,我都会使用试用版而不是在我的电脑上使用双启动。

【问题讨论】:

  • 这些指针是否有效?

标签: c directory printf readdir


【解决方案1】:

... 是两个特殊文件,它们位于 Linux 和其他类 Unix 系统的每个目录中。 . 代表当前目录,.. 代表父目录。

【讨论】:

  • 我确信 Windows 也喜欢这些点,即使它不是很像 unix。
【解决方案2】:

Unix 中的每个目录都有条目.(表示当前目录)和..(父目录)。 让他们以“。”开头。它们是隐藏文件; ls 通常不显示它们,除非您使用“-a”选项。

见:

[:~/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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    相关资源
    最近更新 更多