跳过GNU C中列出的目录

时间:2015-11-07 16:56:22

标签: c

首先,我是一名完整的编程新手,特别是在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);
}

感谢您提供任何帮助。我特别感兴趣的是可以提供可以帮助我解决此问题的教程的网站链接 小项目,因为我想要更好地理解我正在做什么。 :)

1 个答案:

答案 0 :(得分:0)

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

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