
正常情况不用重新打开。。
请问是如何读取文本的行数的??
rewind(fp);
可以将指针回到起始位置。。
------------------------------
infile不用换名字啊,但是你那个写了有点问题,
ifstream
infile(file,ios::binary);其实不能叫打开文件
打开文件是
infileopen();
---------
假设就是要你那样写,那就换个名字,
这样写
ifstream
infile(file,ios::binary);
infileclose();
ifstream
infile2(file,ios::binary);
//重新打开
-----------------------------
还有一个问题,为何一定要知道行数呢??
就算要知道行数,你是如何读取文件统计\n的?
难道用的是fgetc,判断当前字符??
--------------
明显效率太低了。。
完全可以读取一行啊
使用getline
例如
ifstream
infile(file,ios::binary);
string
str;
while(getline(infile,str))
{
//对str *** 作,就是当前行
}
#include <stdioh>
int hangshu(char file[])//输入工程目录下的文件名,或者其他目录下绝对路径名例如:c:\\1txt;
{
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:\\1txt");//这里说明你要打开的文件。这个是c盘根目录下文件
int hst=hangshu("1txt");//工程目录下的文件。
printf("行数:%d\n",hs);
printf("行数:%d\n",hs);
}
如上是用c编写的,不是c++
运行的时候可以把中文注释去掉。
完全可以运行的,我已经测试过了。
涉及到java中读写文件的IO *** 作。
获取一个文本文件的行数较为方便的方法,是通过BufferedReader类的readLine()方法,间接的统计行数。
源代码:
public
static
int
getTextLines()
throws
IOException
{
String
path
=
"c:\\jobtxt"
;//
定义文件路径
FileReader
fr
=
new
FileReader(path);
//这里定义一个字符流的输入流的节点流,用于读取文件(一个字符一个字符的读取)
BufferedReader
br
=
new
BufferedReader(fr);
//
在定义好的流基础上套接一个处理流,用于更加效率的读取文件(一行一行的读取)
int
x
=
0;
//
用于统计行数,从0开始
while(brreadLine()
!=
null)
{
//
readLine()方法是按行读的,返回值是这行的内容
x++;
//
每读一行,则变量x累加1
}
return
x;
//返回总的行数
}
以上就是关于C语言中如何读取文件里的行数全部的内容,包括:C语言中如何读取文件里的行数、用C语言读出文件行数、java中怎么获得一个文本文件的行数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)