免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: qw8990032

[C] C语言如何读取txt文档的最后一行数据 [复制链接]

论坛徽章:
0
发表于 2012-12-29 18:21 |显示全部楼层
感谢两位给的程序,已经参考了 哈哈~~~

论坛徽章:
0
发表于 2012-12-30 16:12 |显示全部楼层
先扫描换行符,记录最后一个和前一个的位置,然后把其中的内容读出来。

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
发表于 2012-12-30 16:35 |显示全部楼层
@bruceteen
只要定位到文件尾,
取文件长度,有效长度=文件长度
如果最后一个是"\r", 有效长度-1
如果最后一个是"\n",且倒数第二个是”\r" 有效长度-2
从有效长度到0,找\r 或\n;找到边界条件。

分配文件长度-边界条件
从边界条件位置读到文件尾即可。

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
发表于 2012-12-30 16:36 |显示全部楼层
@qw8990032人家都说了要用c99编译参数了

论坛徽章:
1
午马
日期:2013-12-19 13:55:53
发表于 2012-12-31 09:35 |显示全部楼层
写个脚本, 一行命令即可, 如果非要C语言的话, 那就c语言调用该脚本, 好用又没有bug, 何必非要自己去折腾呢?  如果真的要用c来实现的话,可以参考命令的实现源码

论坛徽章:
0
发表于 2012-12-31 10:44 |显示全部楼层
本帖最后由 FaintKnowledge 于 2012-12-31 10:51 编辑

回复 1# qw8990032

打开后依次读取每一行,一旦到达文件末尾就打印上次读取到缓冲区的数据。然后这个就是最后一行了。。。实现:
  1. #include "stdlib.h"
  2. #include "stdio.h"

  3. int main()
  4. {
  5.     FILE *fp;
  6.     char a[1024];// gets the line,you can define 1024 2048 or ++ or --

  7.     fp = fopen("test", "r");//open the file ,,you can replace test with temp.txt
  8.     while(!feof(fp))  // if not reach the end ,then gets the next line
  9.     {
  10.         fgets(a,sizeof(a),fp); //get the current line
  11.         if(feof(fp))    //if reach the end,then printf the last gets
  12.             printf("%s",a);
  13.     }
  14.     fclose(fp);//close file
  15. }
复制代码
//添加了注释!

论坛徽章:
0
发表于 2012-12-31 13:16 |显示全部楼层
回复 16# FaintKnowledge


    非常谢谢

论坛徽章:
0
发表于 2012-12-31 13:18 |显示全部楼层
回复 17# qw8990032


    不客气!能实现就好,不建议数据量大的用这个...

论坛徽章:
0
发表于 2012-12-31 13:31 |显示全部楼层
回复 18# FaintKnowledge
呵呵,你的是最方便的,代码最少:wink:

   

论坛徽章:
0
发表于 2012-12-31 13:39 |显示全部楼层
回复 19# qw8990032


这方面还真拿出手,呵呵!
但又很多空操作...
如果实现的话,估计比lseek,fseek要慢一点...
数据小了看不出来,来个几百G就看出来了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP