C程序关于如何知道文件行数的问题

C程序关于如何知道文件行数的问题,第1张

//由于DOS不支持中文输入,所以文件名要英文的

//^_^比如test.txt

//与程序放在同一个文件夹里的文件直接输入文件名加扩展名就行,如test.txt

//在其它地方的文件如在d盘根目录,输入包括完整路径如d:\test.txt

//

#include<iostream.h>

#include<fstream.h>

#include<string.h>

int main()

{

char fileName[30]

int line=0

cout<<"输入你要 *** 作的完整文件名(包括扩展名): "<<endl

cin.getline(fileName,30)

ifstream inFile(fileName)

if(inFile.fail())

{

cout<<"error for file"<<endl

return 0

}

cout<<fileName<<"文件的行数"<<endl

char str[101]

inFile.getline(str,100)

while(!inFile.eof())

{

line++

inFile.getline(str,100)

}

cout<<line<<endl

inFile.close()

return 0

}

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

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存