c语言文件行数函数 c语言有关文件的函数

用c语言怎么读取txt文件中的行数

读取文件行数, 可以逐个字符读取文件,到文件尾,统计\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;

}

用C语言读出文件行数

#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++.

运行的时候可以把中文注释去掉。

完全可以运行的,我已经测试过了。

统计文件行数 c语言

统计行数可以通过统计换行符\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 line1

test line2

则会输出:

文件共有2行。

c语言问题(想要读取文件的行数)

代码中有两个问题:

(1)while(){}语法问题。

while(条件)/////这后面不能加分号,加分号后将做空循环,循环里不会执行循环体的代码

{

循环体;

}

把while()后面的分号";"去掉就好。

(2)while里面的条件(c=fgetc(fp) !=EOF) 有问题。按照C语言运算符的优先级将按以下顺序执行这个while循环里面的语句:

1) 读取文件: fgetc(fp)

2) 将读取文件的结果与EOF比较: fgetc(fp) !=EOF

3) 将比较的结果赋值给c,就是说c每次得到的不是true(1)就是false(0),根本不是你想要的结果

这个表达式其实是:while (c = (fgetc(fp) != EOF) )

正确的写法是:while ( (c = fgetc(fp)) != EOF)

所以最后的代码修改如下:

#includestdio.h

main()

{

FILE *fp;

char name[100],c;

int i;

int count = 0;//计算文件中字符个数,从而判断是否为空文件

i=0;//这边为什么初始化为1?如果输入的是空文件那么应该就是0行

printf("enter filename:");

gets(name);

fp=fopen( name ,"r");

if (fp != NULL)

while ( (c=fgetc(fp)) != EOF )

{

count ++;

if(c == '\n')

i++;

}

if(i == 0 count 0) i ++; //如果没有'\n'但是文件非空,那么该文件只有一行

printf("number of numbers:%d\n",i);

}

当然,仅仅判断'\n'并不保险,并不是所有系统下面的换行都有'\n',比如dos系统是"\r\n", linux系统一般用'\n',苹果系统用的是'\r',如果是苹果系统这种做法就失效了。


当前文章:c语言文件行数函数 c语言有关文件的函数
当前地址:http://pwwzsj.com/article/hhhhoc.html