//^_^比如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 *** 作,就是当前行
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)