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