统计行数可以通过统计换行符\n来实现。不过需要注意的是,有些文件最后一行并不存在换行符,所以代码中需要对此作处理。
可以在达到文件结尾后,判断前一个字符,如果不是换行符,那么应补加最后一行统计。
代码如下:
假定输入文件为in.txt,该文件存在且可读。
#include <stdio.h>int main()
{
FILE * fp = NULL //文件指针。
int c, lc=0 //c为文件当前字符,lc为上一个字符,供结尾判断用。
int line = 0 //行数统计
fp = fopen("in.txt", "r")//以只读方式打开文件。
while((c = fgetc(fp)) != EOF) //逐个读入字符直到文件结尾
{
if(c == '\n') line ++ //统计行数。
lc = c //保存上一字符。
}
fclose(fp) //关闭文件
if(lc != '\n') line ++//处理末行
printf("文件共有%d行。\n", line)
return 0
}
样例输入输出:
如in.txt有如下内容:
test line1test line2
则会输出:
文件共有2行。
读取文件行数, 可以逐个字符读取文件,到文件尾,统计\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
}
用fstream(文件流),fstreamfile
然后
file.getline(char*,int,char
a=‘\n’)第一个是一个存储字符串的指针,第二个是要读取的最大长度,第三个是行结束符,默认是回车,函数说明就是当读入的字符超过最大长度int或者遇到行结束符(‘\n’)时就停止,而且这个很好用的(对于读入和写入),你看看文档就会了,哈哈,给分啊。!!~~