|
|
发表于 2022-9-21 17:38:59
|
显示全部楼层
#include <体育场>
#include <统一>
#include <>
#include <弦>
#include <斯特利布>
#include <系统/统计>
#define最大 256
长总计;
int countLines(常量字符 *文件名);
int isCode(const 字符 *文件名);
void findAllDirs(const char *path);
int countLines(常量字符 *文件名)
{
文件 *fp;
整数计数 = 0;
温度;
如果 ((fp = 源(文件名,“r”)) == 空)
{
fprintf(标准,“无法打开文件: %s\n”, 文件名);
返回 0;
}
而 ((温度 = fgetc(fp)) != EOF)
{
如果 (温度 == '\n')
{
计数++;
}
}
断续器;
返回计数;
}
int isCode(常量字符 *文件名)
{
整型长度;
长度 = 字符串(文件名);
如果 (!斯特坎普(文件名 + (长度 - 2),“.c”))
{
返回 1;
}
还
{
返回 0;
}
}
void findAllDirs(const char *path)
{
目录 *dp;
结构差异 *条目;
结构统计统计;
如果 ((dp = opendir(路径)) == 空)
{
fprintf(stderr, “路径 %s 是错误的!\n”, path);
返回;
}
切迪尔(路径);
而 ((条目 = redir(dp))!= 空)
{
lstat(entry->d_name, &statbuf);
如果 (!strcmp(“.”, 条目>d_name) || !strcmp(“..”, 条目>d_name))
继续;
如果 (S_ISDIR(statbuf.st_mode)
{
查找所有dirs(入口->d_name);
}
还
{
如果 (是代码(入口->d_name))
{
总计 += 计数行(入口->d_name);
}
}
}
奇迪尔(“..”);
封闭式;
}
int main()
{
字符路径 [最大] = “.”;
printf(“计算中...\n”);
查找所有Dirs(路径);
printf(“目前你总共写了 %ld 行代码!\n\n”, total);
返回 0;
} |
|