前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一练(116)

基础知识 | 每日一练(116)

作者头像
小林C语言
发布2019-09-17 17:00:48
2210
发布2019-09-17 17:00:48
举报
文章被收录于专栏:C语言入门到精通
础知识练习
学生:我想用 “r+” 打开一个文件, 读出一个字符串, 修改之后再写入,

从而就地更新一个文件。可是这样不行。

小林:确保在写操作之前先调用 fseek, 回到你准备覆盖的字串的开始, 况且在读写“+” 模式下的读和写操作之间总是需要 fseek 或 fflush。同时, 记住改写同样数量的字符, 而且在文本模式下改写可能会在改写处把文件长度截断, 因而你可能需要保存行长度。

学生:一旦使用 freopen() 之后, 怎样才能恢复原来的 stdout (或stdin)?

小林:没有什么好办法。如果你需要恢复回去, 那么最好一开始就不要使用 fre-open()。可以使用你自己的可以随意赋值的输出 (输入) 流变量, 而不要去动原来的输出 (或输入) 流。有一种不可移植的办法, 可以在调用 freopen() 之前保存流的信息, 以便其后恢复原来的流。一种办法是使用系统相关的调用如 dup(), dup2() 等。另一种办法是复制或查看 FILE 结构的内容, 但是这种方法完全没有可移植性而且很不可靠。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档