如何用C语言在linux上统计文件行数

 我来答
风若远去何人留
推荐于2018-05-17 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450126
专业C/C++软件开发

向TA提问 私信TA
展开全部

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

匿名用户
2015-01-10
展开全部
int count( char *filename )
{
    FILE *fp = fopen( filename, "r" );
    int c, cnt = 0;
    while( (c = fgetc( fp )) != EOF ) {
        if ( c == '\n' ) {
            cnt++;
        }
    }
    fclose( fp );
    return cnt;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小迈白城C9
推荐于2016-04-06 · TA获得超过211个赞
知道答主
回答量:202
采纳率:0%
帮助的人:81.4万
展开全部
 #include<stdio.h>
 int main(void)
 {
  FILE *fp=fopen("txt.txt","r");
  char c='\0';
  int line=0;
  while (c!=EOF)
  {
        fscanf(fp,"%c",&c);
        if(c=='\n') line++;
  }
  fclose(fp);
  printf("行数为:%d\n",line+1);
 }
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式