fseek读取外部文件结果出现空行

OU14563 2014-07-19 05:05:10
用fseek(fp,50L,SEEK_SET)定位后,用fread(buf,size,count,fp)和fwrite(buf,size,count,fs) 随机读取外部文件后,txt文件大概50个字节为一行的数据。结果:

1.167554 -0.001526 -0.061951 0.469360 0.009766
1.167556 -0.002441 -0.062866 0.468750 0.008545
1.167558 -0.002747 -0.061951 0.468445 0.008545
数据确实从第二行读取了,但是想问问为什么存入的话会空出第一行,为什么不是把所有的数据往上移然后不出现空行。望大家帮忙看看,非常感谢!
...全文
153 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 OU14563 的回复:
打开的方式是“rb”,写入的方式是“wb”。
一行的长度是50个字节左右,那么是不固定的。你每次跳50个字节,就可能会出现跳到的地方不是行首。 这种最好的办法是。 char **ppcFile; ppcFile = new char*[行数]; fgets读一行。 ppcFile[i]=new char(strlen(一行)+1); strcpy(ppcFile[i], (一行)); 整个文件分行存放到内存里面。这样的方式来跳行。 以fseek来跳行,必须计算准确。50个字节,你得必须确定每一行算上回车是50个字节才行。
OU14563 2014-07-22
  • 打赏
  • 举报
回复
打开的方式是“rb”,写入的方式是“wb”。
赵4老师 2014-07-21
  • 打赏
  • 举报
回复
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。
  • 打赏
  • 举报
回复
打开方式是不是“r”?最好是用“rb”打开。
OU14563 2014-07-21
  • 打赏
  • 举报
回复
非常感谢赵4老师的回答!要从第十行的数据读取,指针通过偏移量移到第十行后读取文件的数据后并存储后,它的结果还是会空出前面的9行空间,数据依然是从第十行存储起来。这个就是赵4老师所说的情况呀,那fread和fwrite两个函数号称是随机读取文件,这样根本就没有达到随机读取和存储的效果呀。
阿呆_ 2014-07-19
  • 打赏
  • 举报
回复
文件是你写的吗? 如果是,那么你需要问自己为什么要跳一行再写。 如果不是,那么问写的人。 问csdn......

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧