[問題] 檔案清空?

看板C_and_CPP作者 (電腦工人)時間15年前 (2011/01/04 14:48), 編輯推噓1(1011)
留言12則, 4人參與, 最新討論串1/2 (看更多)
請問一下 如果我有fopen建立一個檔案後 如果將檔案內容寫入後 使用其檔案後 想要把它清空再重新寫入 如果不重新fopen的話 有辦法做到嗎? 這邊先謝謝各位大大的解答 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.177.31

01/04 14:54, , 1F
我想到是用fseek跑到最前端開始寫資料
01/04 14:54, 1F

01/04 14:55, , 2F
to樓上, 那如果新的內容比較少呢 @_@ ?
01/04 14:55, 2F

01/04 14:56, , 3F
一樓 我有想過用覆蓋的方式 但是怕檔案大小不一致
01/04 14:56, 3F

01/04 14:57, , 4F
是啊,正在思考要怎麼放棄舊的資料...
01/04 14:57, 4F

01/04 14:59, , 5F
ftruncate(fd,0);
01/04 14:59, 5F

01/04 15:01, , 6F
ftruncate是標準函式嗎?
01/04 15:01, 6F

01/04 15:05, , 7F
啊,好像不是 XD
01/04 15:05, 7F

01/04 15:05, , 8F
而且原 po 是用 fopen 而不是用 open 先取得 fd
01/04 15:05, 8F

01/04 15:06, , 9F
看來也不能用 ftruncate ...囧
01/04 15:06, 9F

01/04 15:07, , 10F
如果不用fopen改用open可以seek嗎?
01/04 15:07, 10F

01/04 15:22, , 11F
fd = open(...); lseek(fd,0,SEEK_SET); ftruncate(fd,0);
01/04 15:22, 11F

01/04 15:36, , 12F
謝謝樓上幾位幫忙
01/04 15:36, 12F
文章代碼(AID): #1D8iBJtw (C_and_CPP)
文章代碼(AID): #1D8iBJtw (C_and_CPP)