2014-05-18 55 views
1

我使用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 - 。 守護 - .. Daemon1 - .. 守護 - fich5 Daemon1 - fich4 守護 - fich3 Daemon1 - fich3

我不明白爲什麼在開始點。 Obs .:我不喜歡,但我在筆上使用Ubuntu 14.04,這意味着每次使用Ubuntu時,我都會使用試用版,而不是在我的電腦上使用雙啓動。

+1

是這些指針甚至有效? – this

回答

4

...是Linux和其他類Unix系統中每個目錄中的兩個特殊文件。 .代表當前目錄,..代表父目錄。

+1

我確定Windows也喜歡這些點,即使它不是很像unix。 – Deduplicator

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 
相關問題