看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 寫了一個陣列想要存到txt檔中 但因為陣列內容會隨時更新 所以想要在每次輸入的同時將前一組數據刪除 以達到txt檔中的陣列內容為最新的數據結果 請問有這種刪除前一個結果的指令嗎? 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) FILE *fout; fout=fopen("123.txt","wt"); float a[2]; fprintf(fout,"%.1f %.1f\n",a[0],a[1]); //目前的存法為一直換行往下 fclose(fout); 補充說明(Supplement): 曾經試過\r 不過似乎不會覆蓋 而是在最前面進行下一個輸出 感謝各位協助 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.120.90.230 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1488272123.A.ADC.html
a21802: repeat fopen? 02/28 16:59
LPH66: \r 是螢幕專用, 寫檔的話這些控制字元沒有用 02/28 17:08
LPH66: 最直覺的方式是 rewind(fout) 之後再寫入 02/28 17:10
LPH66: 不過要小心後來的資料太短沒有全部蓋掉的話會有殘餘留下 02/28 17:10
LPH66: 不過你已經有 \n 了那就是第一個換行之後的東西都別管就好 02/28 17:11
LPH66: 真的要全蓋掉的話可以考慮例如每次都多輸出固定數量的空白 02/28 17:11
成功了感謝 如果陣列數固定(這裡為2)的話應該就不會有殘留的問題了吧? ※ 編輯: cliffchang2 (140.120.90.230), 02/28/2017 17:18:11
LPH66: 1234.5 1234.5 跟 0.6 0.7 字元數就不一樣 02/28 17:20
有發現後來資料短時會殘留的問題了 決定手動把換行後的資料刪掉即可 再次感謝 ※ 編輯: cliffchang2 (140.120.90.230), 02/28/2017 17:25:49
laladeer: fseek不可以嗎? 02/28 22:16
LPH66: 可以啊, 不過既然要蓋掉舊資料那 rewind 稍微簡潔一點 03/02 14:26
LPH66: 你也可以直接寫 fseek(fout, 0, SEEK_SET); 意思是一樣的 03/02 14:27