2015-11-07 90 views
-2

首先,我是編程方面的完全新手,尤其是C語言。我將要展示的示例是我從此網站獲取的代碼,並且 已被踢掉,直到它沒有我完全不想做我想做的事。 :)在GNU清單上跳過目錄C

其次,我正在使用Linux Mint和GNU C編譯器的雙核Celeron。

我想要做的是列出目錄中的子目錄,跳過父目錄(如果有的話)。不幸的是,我有 的代碼不起作用。我嘗試了strcpy和strncpy,但我無法弄清楚如何使用它們,我只是搞砸了代碼,以致於在嘗試運行程序時出現 「分段錯誤」。

下面的代碼:

/* 
* This program displays the names of all files in the current directory. 
*/ 

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

int main(void) 
{ 
    DIR   *d; 
    struct dirent *dir; 
    char dirname[255]; 
    d = opendir("."); 
    if (d) 
    { 
     while ((dir = readdir(d)) != NULL) 
     { 
      if (dir->d_type == DT_DIR) 
      { 
       strncpy(dirname, dir->d_name, 254); 
       dirname[254] = '\0'; 
       if (dirname != "..") /* I want to skip this, but it doesn't work */ 
       { 
        printf ("%s\n", dirname); 
       } 
      } 
     } 


     closedir(d); 
    } 

    return(0); 
} 

感謝所有幫助你可以給。我特別感興趣的是可以提供教程的網站鏈接,這些教程可以幫助我完成這個小項目,因爲我希望更好地理解我正在做什麼。 :)

+0

'如果(DIR-> d_type == DT_DIR){如果(的strcmp(DIR-> d_name 「.. 」)!= 0){printf的(「 %S \ n」 個,DIR-> d_name ); }}' – melpomene

+1

如果你想了解你在做什麼,從頭開始! – t0mm13b

+0

可能的重複[如何比較字符串在C條件](http://stackoverflow.com/questions/14779112/how-to-compare-strings-in-c-for-a-condition) – usr2564301

回答

0

在C中,要比較字符串,您需要使用strcmpstrncmp

if (strcmp(dirname, "..") != 0) { ... } 
+0

啊,所以那就是如何使用它! :)顯示時具有完美的意義,但我使用的教程中的示例正在做一些完全不同的事情,所以我無法應用它。非常感謝。 –