| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 928 人关注过本帖
标题:c 读取txt的问题
只看楼主 加入收藏
kaizi1231
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-10-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
c 读取txt的问题
有一个txt文件,保存类型如下:
。。。。。
2424.00
2425.00
2427.00
2425.00
2425.00
2426.00
2426.00

如何保存文件底部最后1200行的数据到数组上面

FILE *fp_dd;
fp_dd= fopen("dd.txt", "a+");
fseek(fp_dd,1200*8,SEEK_END);

文件比较大,如果要获取整个文件的行数,有没有好的方法?!
在线求等
我是新手,勿喷~~
搜索更多相关主题的帖子: 在线 如何 
2016-10-18 09:50
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:7 
要获取整个文件的行数,可以一行一行的读啊,读一行计数加1
2016-10-18 12:43
kaizi1231
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-10-18
收藏
得分:0 
回复 2楼 word123
int flag_dd_n = 0;
int Line = 0;
    do{
flag_dd_n=fgetc(fp_dd);
if (flag_dd_n=='\n')
        Line++;
}
            while(flag_dd_n!=EOF);

我是这么获取到行数的,如果我要获取其中一行或多行的数,该怎么获取啊?
2016-10-18 14:52
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:0 
fgets();获取一行字符串,  或fscanf(flag_dd,"%lf",&dl);获取到一个double型数据。文件里每行都是一个double数据,读一个相当于读一行。
当行数记录到你想要的那行时,就读到你想要的数据了。。。

2016-10-18 22:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:7 
如果每行字节数相同,那么获得文件长度后,可以直接算出位置。(建议以二进制方式打开文件)

如果每行字节数不固定,先分段,比如4k字节一段(要想效率高,得和文件缓冲区一样大),从后往前读。在每一段中用strrchr搜索'\n',……
2016-10-18 22:46
kaizi1231
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-10-18
收藏
得分:0 
回复 4楼 word123
    非常感谢~~
 
我通过这个可以获取到我想要N行的数据

 fseek(flag_dd,-9*N,SEEK_END);     
    fscanf(flag_dd,"%lf",&dl);

这样,我是不是可以直接用循环保存数据到数组里了
比如我要保存最后10行的数据到数组C中

然后我有个疑问想问下,就是如果TXT文件打开后,我获取完文件行数和保存最后10行的数据到数组C中,是否可以直接继续写入数据到TXT文件里面,不用先fclose(flag_dd;然后再fopen打开保存的吧?
2016-10-19 11:43
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1692
专家分:4262
注 册:2007-12-27
收藏
得分:7 
对于使用读写模式打开的文件,读完之后要写之前必须有fseek()或者rewind()动作。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2016-10-19 12:16
kaizi1231
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-10-18
收藏
得分:0 
回复 7楼 forever74
就是要把先前的文件位置指针指回到文件末尾,这样就可以继续写入数据了,是吧~
2016-10-20 17:43
快速回复:c 读取txt的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018433 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved