[問題] 一個寫檔fprintf順序的問題

看板C_and_CPP作者 (severus)時間13年前 (2011/06/07 00:59), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev C++ 問題(Question): C語言 我從A讀取資料,每一筆長度固定,資料共有上千筆 程式的目的是要統計資料各個類型的數量,並列出所有資料(例:甲、乙、丙、丁) 我的做法是 int 甲,乙,丙,丁; while (1) { if (end of file) break; fscanf(...); {... 做分類 甲++; or 乙++; or 丙++; or 丁++; ... } fprintf(...); } 每讀一筆資料就做分類,相對應的類型數量就會 + 1 然後印出目前讀取到的資料 遇到的問題是: 題目要求格式是先寫甲乙丙丁的數量,再顯示每一筆資料 例: --- 甲 W個 乙 X個 丙 Y個 丁 Z個 data1 data2 data3 . . . data2000 --- 但是因為我是每讀一筆就印出來,最後都讀完後才知道統計的數量 fseek我試過,不可行。 因為要先預留字元(或空白),不然會把前面已經寫好的data蓋掉 再加上WXYZ數字也不能確定,所以也沒辦法預留固定的空間 曾經想過用*pointer or array先存資料,最後一起印出 但是上千筆的資料好像太多了 而且覺得費時做罷 所以上來請教有沒有其他方法可以把後來的資料印到前面去 先謝謝了 -- 一百次的感動比不上一次的心動 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.48.111

06/07 01:14, , 1F
會想到 fseek output 何不試試 fseek input?
06/07 01:14, 1F

06/07 08:51, , 2F
一種比較直覺做法,讀兩次,第一次讀完後,rewind,再讀第二
06/07 08:51, 2F

06/07 08:52, , 3F
次.當然第一次就要把統計總共數量.第二次在逐步列印資料
06/07 08:52, 3F
文章代碼(AID): #1DxGTxtc (C_and_CPP)