用c语言怎么读取txt文件中的行数

用c语言怎么读取txt文件中的行数,第1张

读取文件行数, 可以逐个字符读取文件,到文件尾,统计\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

}

正常情况不用重新陆颂打开。。

请问是如何读取文本的行数的??

rewind(fp)

可以将指针回到起始位置。。

------------------------------

infile不用换名字啊,早坦郑但是你那个写了有点问题,

ifstream

infile(file,ios::binary)其实不能叫打开文件

打开文件是

infile.open(*****)

---------

假设就是要你信吵那样写,那就换个名字,

这样写

ifstream

infile(file,ios::binary)

*******

infile.close()

ifstream

infile2(file,ios::binary)

//重新打开

-----------------------------

还有一个问题,为何一定要知道行数呢??

就算要知道行数,你是如何读取文件统计\n的?

难道用的是fgetc,判断当前字符??

--------------

明显效率太低了。。

完全可以读取一行啊

使用getline

例如

ifstream

infile(file,ios::binary)

string

str

while(getline(infile,str))

{

//对str *** 作,就是当前行

}

#include <stdio.h>

int hangshu(char file[])//输入工程目凳枣棚录下的文件名,或者其他目录下绝对路径名例如:c:\\1.txt

{

char c

int h=0

FILE *fp

fp=fopen(file,"r")

if(fp==NULL)

return -1//表示文件打开错误

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

{

if(c=='\n')

h++

else

{

c=fgetc(fp)//这是处理最后一行可能没有换行标志,但是确文件结束。

if(c==EOF)

{

h++

break

}

}

}

return h

}

int main()

{

int hs=hangshu("c:\\1.txt")//这里说明你要打开的文件。这个是c盘根目录下文件

int hst=hangshu("1.txt")//工程目录下的文件。

printf("行数:%d\n",hs)

printf("行数:岩碧%d\n",hs)

}

如上是用c编写的,不是c++.

运行的时候可以把中文注释去枣则掉。

完全可以运行的,我已经测试过了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8159127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存