统计文件行数 c语言

Python014

统计文件行数 c语言,第1张

统计行数可以通过统计换行符\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 line1

test line2

则会输出:

文件共有2行。

读取文件行数, 可以逐个字符读取文件,到文件尾,统计\n的个数

参考代码如下

#include <stdio.h>

int main()

{

    int c

    FILE *fp

    int lines=0

    fp=fopen("in.txt", "rb")

    if(fp)

    {

        while((c=fgetc(fp)) != EOF)

            if(c=='\n') lines++

        printf("%d\n",lines)

        fclose(fp)

    }

    return 0

}

也可以通过fgets函数,每次读取一行,到文件尾,然后计算读取的次数

#include <stdio.h>

#include <string.h>

int main()

{

    char s[100]

    FILE *fp

    int lines=0

    fp=fopen("in.txt", "r")

    if(fp)

    {

        while((fgets(s,100,fp)) != NULL)

            if(s[strlen(s)-1]=='\n') lines++

        printf("%d\n",lines)

        fclose(fp)

    }

    return 0

}

用fstream(文件流),fstream

file

然后

file.getline(char*,int,char

a=‘\n’)第一个是一个存储字符串的指针,第二个是要读取的最大长度,第三个是行结束符,默认是回车,函数说明就是当读入的字符超过最大长度int或者遇到行结束符(‘\n’)时就停止,而且这个很好用的(对于读入和写入),你看看文档就会了,哈哈,给分啊。!!~~