读取文件行数, 可以逐个字符读取文件,到文件尾,统计\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++.
运行的时候可以把中文注释去枣则掉。
完全可以运行的,我已经测试过了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)