
统计行数可以通过统计换行符\n来实现。不过需要注意的是,有些文件最后一行并不存在换行符,所以代码中需要对此作处理。
可以在达到文件结尾后,判断前一个字符,如果不是换行符,那么应补加最后一行统计。
代码如下:
假定输入文件为in.txt,该文件存在且可读。
#include <stdio.h>int main()
{
FILE * fp = NULL //文件指针。
int c, lc=0 //c为文件当前字符,lc为上一个字符,供结尾判断用。
int line = 0 //行数统计
fp = fopen("in.txt", "r")//以只读方式打开文件。
while((c = fgetc(fp)) != EOF) //逐个读入字符直到文件结尾
{
if(c == '\n') line ++ //统计行数。
lc = c //保存上一字符。
}
fclose(fp) //关闭文件
if(lc != '\n') line ++//处理末行
printf("文件共有%d行。\n", line)
return 0
}
样例输入输出:
如in.txt有如下内容:
test line1test line2
则会输出:
文件共有2行。
知道指定后缀名的文件总个数命令:find.-name*.cpp|wc-l知道一个目录下代码总行数以及单个文件行数:find.-name*.h|xargswc-llinux统计文件夹中文件数目第一种方法:ls-l|grep“^-”|wc-lls-l长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)。如果ls-lR|grep“^-”|wc-l则可以连子目录下的文件一起统计。grep^-这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是^dwc-l统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。第二种方法:find./-typef|wc-l由于默认find会去子目录查找,如果只想查找当前目录的文件用需要说明的是第二种方法会比第一种方法快很多,尤其是也统计子目录时。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)