如果在文件得每一行末加入几个字符?

lexzhong 2005-11-14 02:35:49
用fseek吗?怎么seek到每一行的行末?
@_@
...全文
154 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
x86 2005-11-15
  • 打赏
  • 举报
回复
你这种情况一定要用临时文件,因为在某行插入字符后,剩下的所有数据都必须顺序往后移,所以你必须用临时文件保存新的数据。
c里面用fgets得到一行,你在每次得到的一行的行末加上字符后再写道新的临时文件里面。
hubert1982 2005-11-15
  • 打赏
  • 举报
回复
楼上说的对,你定义一个字符数组a[200] 然后用fgets(a,sizeof(a),fp)得到一行数据,接下来用feof 判断是否到达一行数据的结尾,到的话就在后面追加你的数据存进这个数组,然后把这个字符数组写到另外的一个临时文件里面去
speeches 2005-11-14
  • 打赏
  • 举报
回复
行在硬盘是没概念的,第一次晓得c中也有getline//这好像c++中的iostream.

不过那个getline的实现应该是查找'\n'来确定行尾的.

不过文件在磁盘上是顺序存放吧,找到能write,也不行.楼上的几位说得好象有点问题.

哦,把整个文件读到大字符串中,如果大就分次读,行尾是'\n',文件末是ENDP(记不得了),在每个'\n'前加string.查找'\n'用,这个就easy了.改完再存文件.
jixingzhong 2005-11-14
  • 打赏
  • 举报
回复
最好还是在熟悉文件的基础上,
直接 FSEEK() 移动指针到末尾去.

比如, 一行有 9 个字符,
刚开始是在行首,
fseek(fp,8L,1); 就是移动到了最后一个字符的位置了

然后可以用一个循环:
fseek(fp,9L,1); // 注意指针的偏移量的不同 ..
jixingzhong 2005-11-14
  • 打赏
  • 举报
回复
用 getline 可以比较快的到末尾去 ...
屋顶上的老猫 2005-11-14
  • 打赏
  • 举报
回复
要操作文件,必须对生成文件的格式非常了解!比如,你写进了5个一样的数据结构,定位到第一个数据结构末尾只需要在seek()里写如sizeof(结构名)*1

70,037

社区成员

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

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