C语言解析文件';细节

C语言解析文件';细节,c,list,parsing,detail,C,List,Parsing,Detail,我是C的初学者 我想解析目录下的所有源代码(例如,*.c,*.h) 我想知道文件名,大小,源代码中有多少行 搜索之后,我可以解析一个文件的细节(以获得源代码中的行数)。我还可以使用system() 但我不知道如何将所有这些结合到一个程序中,所以我正在寻找这方面的指导 谢谢大家 下面是我现在的代码 我不知道下一步该怎么办 int main (void){ DIR *dp; FILE *fp; struct dirent *ep; dp = opendir (

我是C的初学者

我想解析目录下的所有源代码(例如,
*.c
*.h

我想知道文件名,大小,源代码中有多少行

搜索之后,我可以解析一个文件的细节(以获得源代码中的行数)。我还可以使用
system()

但我不知道如何将所有这些结合到一个程序中,所以我正在寻找这方面的指导

谢谢大家


下面是我现在的代码

我不知道下一步该怎么办

int main (void){

    DIR *dp;
    FILE *fp;
    struct dirent *ep;


    dp = opendir ("./");
    fp = fopen ("output.txt", "w");
    if (dp != NULL)
    {
            while (ep = readdir (dp))

            fprintf(fp,"%s\n", ep->d_name);

            (void) closedir (dp);
    }
    else
    perror ("Couldn't open the directory");

    return 0;

}以下是您需要注意的事项:

  • 如何迭代文件名,例如使用
    opendir()
    readdir()
    等等,当然包括实际迭代的
    while
    语句
  • 如何获取文件详细信息,例如使用
    fstat()
  • 如何打开和读取文件,例如使用
    fopen()
    fgetchar()
    fclose()
    ,包括如何使用
    if
    识别行尾字符
这应该是你开始这项工作所需要的工具,我建议你先看看它们,然后再尝试构建你的程序。然后,我们可以在其他问题中注意到该计划的具体问题


请注意,上面给出的示例(特别是
opendir
要点中的示例)可能是特定于平台的。如果它们不可用,您将需要为您的平台找到等价物,因为标准C不提供该功能。

只需使用
wc dir/*
,或
wc dir/*.[hc]
@Tom,因为这是一个开发站点,OP是一个初级C程序员,它可能是(可能是)他们正试图编写自己的程序来做到这一点:-)你想解析它们,还是编译它们?解析,想让文件夹中列出所有*.c*.h的文件以及这些文件的大小和行都很棒。但这是Linux或POSIX。标准C99不知道目录@因此有了“如”一词。显然,如果在非POSIX环境中运行,则需要找到正确的方法。这并不意味着答案是无效的,它给出了你需要找到的东西,还有一个例子。我要澄清一下,关于堆栈溢出的例子有上百个。在学习如何处理目录时,最大的障碍是一件一件地处理。对于<>代码SCANDIR或 OpenDR/RADDIR有很多选项要考虑,并且需要一段时间来浸泡。如果你想走这条路,man scandir中有一个简单的例子<代码>统计
是另一个难题。只需搜索这个网站。如果您仍然被卡住,请告诉我们。