[問題] 從檔案後面開始抓資料

看板C_and_CPP (C/C++)作者 (JACK)時間16年前 (2009/08/17 15:41), 編輯推噓6(6015)
留言21則, 9人參與, 最新討論串1/1
請問一下 如果我有一個檔案內容如下 test.txt aa bb cc dd ee ff 如果從前面讀的話 就fgets 一次讀一行 就可以印出類似 aa bb cc dd ee ff 但是如果我想從後面開始讀呢 得到這樣的結果 ff ee dd cc bb aa 我有想到用 sprintf(tmp, "%s%s", buf,tmp) buf 就是每次讀出來 從上面 tmp就是最後的結果 不知道這樣的作法 是不是一般都是這樣做的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.133.11

08/17 15:47, , 1F
先把檔案全部讀完,之後再做輸出,如何?
08/17 15:47, 1F

08/17 16:08, , 2F
sprintf 中的目標陣列 (第一個引數) 和來源陣列有重疊
08/17 16:08, 2F

08/17 16:09, , 3F
行為是未定義的 (也就是無法預期會發生什麼事)
08/17 16:09, 3F

08/17 16:13, , 4F
重疊是指??
08/17 16:13, 4F

08/17 16:14, , 5F
請問一樓 全部資料用fread讀出來之後 怎麼由後往前讀
08/17 16:14, 5F

08/17 16:16, , 6F
fseek?
08/17 16:16, 6F

08/17 16:35, , 7F
fseek 往上find '\n'好像有點複雜 我先測試一下sprin
08/17 16:35, 7F

08/17 16:49, , 8F
我會先通通都讀進來 存在一個陣列 從陣列最後一個去印
08/17 16:49, 8F

08/17 16:56, , 9F
樓上已經幫你說破了,其實我還有想到stack,不過效率可
08/17 16:56, 9F

08/17 16:57, , 10F
能慢一點
08/17 16:57, 10F

08/17 18:04, , 11F
能讀進來再做的事 別執著於用讀檔處理 何苦呢
08/17 18:04, 11F

08/17 18:16, , 12F
感謝 我剛好跟james使用一樣的方法 成功:D
08/17 18:16, 12F

08/17 22:54, , 13F
借問一下 如果我只需要最後一行(ff)又應該怎麼做?用陣列是
08/17 22:54, 13F

08/17 22:55, , 14F
可以 但如果檔案有1000行 那速度不就很慢? 有甚麼可以直接
08/17 22:55, 14F

08/17 22:55, , 15F
讀到最後一行的方法?
08/17 22:55, 15F

08/18 00:43, , 16F
seek_end
08/18 00:43, 16F

08/18 10:07, , 17F
fseek(fp,offset,SEEK_END)
08/18 10:07, 17F

08/18 10:22, , 18F
seek_end只是移檔案指標到尾端, 還得由後往前找到最後一
08/18 10:22, 18F

08/18 10:22, , 19F
個換行符號才行不是?? 所以小弟也是覺得直接開檔讀到尾
08/18 10:22, 19F

08/18 10:23, , 20F
在從記錄的buffer裡取data; 不過要是來個超過2G的檔案就
08/18 10:23, 20F

08/18 10:23, , 21F
不知道該怎麼辦了Orz
08/18 10:23, 21F
文章代碼(AID): #1AYGcJFi (C_and_CPP)
文章代碼(AID): #1AYGcJFi (C_and_CPP)