首先,我是編程方面的完全新手,尤其是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);
}
感謝所有幫助你可以給。我特別感興趣的是可以提供教程的網站鏈接,這些教程可以幫助我完成這個小項目,因爲我希望更好地理解我正在做什麼。 :)
'如果(DIR-> d_type == DT_DIR){如果(的strcmp(DIR-> d_name 「.. 」)!= 0){printf的(「 %S \ n」 個,DIR-> d_name ); }}' – melpomene
如果你想了解你在做什麼,從頭開始! – t0mm13b
可能的重複[如何比較字符串在C條件](http://stackoverflow.com/questions/14779112/how-to-compare-strings-in-c-for-a-condition) – usr2564301