PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] C语言档案内容处理
楼主:
zoooooa
(喔唷唷唷唷唷)
2015-04-19 19:47:58
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VS2010
问题(Question):
想请问各位一个新手问题
如果我有一份txt档案内容为
111
我想把它更改成
222(长度不变)
除了先把它读出来到memory中修改完再写回去之外
有办法在读取的当下就直接做字符判断更改吗?
p = fopen("tmp.txt","r+");
while((c=fgetc(p))!=EOF)
{
if(c == '1')
{
fputc('2', p);
}
}
fclose(p);
这样的code并无法使用
请问问题出在哪里?
谢谢大家指教.
作者:
TobyH4cker
(Toby (我要当好人))
2015-04-19 19:57:00
r+ ...没事档案串流是这样,你读取到哪里,指标就指到哪里所以如果要直接对串流做修改,要再修改指标位址fseek
作者:
EdisonX
(卡卡兽)
2015-04-19 20:12:00
char ch;FILE * fp = fopen("C:\\s.txt", "r+");@@ 手机挂了,请无视上面两行 Orz
http://pastie.org/10101324
大概像这样吧..
楼主:
zoooooa
(喔唷唷唷唷唷)
2015-04-19 20:19:00
谢谢楼上两位解答 感恩~
作者:
EdisonX
(卡卡兽)
2015-04-19 20:43:00
抱歉我只是鸡婆想问... 这种直接对档案做修改处理的 ,真的会比全都 dump 到内存改完,再一次写回去快吗 ???我的记忆还停留在对档案处理的函式用得愈少愈好,拉到mem里做完再一次处理速度比较快...
作者:
MOONRAKER
(㊣牛鹤鳗毛人)
2015-04-19 20:46:00
fputc()是buffered output,你需要用fread()/fwrite()达成直接读写。至于快或慢,当档案比可用内存大很多、或者很久很久才要更改档案内一些小地方时,buffered read是否还一样好呢?
作者:
EdisonX
(卡卡兽)
2015-04-19 20:52:00
原来如此.. 那应是我读写的算小档而已 (数MB), 感谢 M 大
作者:
MOONRAKER
(㊣牛鹤鳗毛人)
2015-04-19 20:56:00
也只是理论而已 毕竟现在这种内存很少又没有VM的状况不多 但是像单芯片上可能就有差了
继续阅读
Re: [分享] 嵌入式系统公司指标宣告考题
anoymouse
[问题] 影像(内存释放操作请问)
redonizuka
[问题] C++ 程式码问题
name2name2
[讨论] 聊一下 C 语言
RunRun5566
[问题] library用.txt打开会造成执行影响吗
a3567152
[问题] MFC 执行绪 获得回传值方式
srxrrr
[问题] 是否有函式可开启档案总管目前指到的档案?
yhboy
[问题] 如何去掉输出最后多出的空白
november1121
Re: [问题] 结构和指标定义问题
LPH66
[问题] 模拟输入中英文
hardware
Links
booklink
Contact Us: admin [ a t ] ucptt.com