全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1211
推到 Plurk!
推到 Facebook!

有關檔案內的指標的問題

尚未結案
balado
一般會員


發表:14
回覆:6
積分:4
註冊:2003-12-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-05 05:13:51 IP:211.76.xxx.xxx 未訂閱
對不起!各位高手,又有個問題想問,還是一樣在純粹C的環境下 假設說我現在有兩個檔案:a.txt 、 b.txt a.txt的內容是: 1220 2 3 4 4 4 6 5 7 8 9 5 b.txt的內容是: 65485 9 7 4 1 6 3 7 8 9 1 3 如同上面所述,每個檔案內都有十二個數字,各有三行,當我用fgetc分別讀取a檔案跟b檔案時,我可以分別得到1220跟65485的值,那我比較過後得知1220比65485小,所以我要回到1220這一行的起頭,然後將整行的字串印出到C的檔案,也就是說C的檔案會有 1220 2 3 4 這一行輸入 我知道抓一行的字串可以用fgets可是我卻不知道當他已經讀取那一行的第一個數字﹝此例:1220﹞怎麼把FILE的指標移到這一行的起頭,以便我整行複製到另外一個檔案 也就是說當我讀到 1 2 2 0 ↑ 我用ugetc把已經讀取的1吐回去,然後用fscanf讀回來這個數字,才可以去比較說到底是1220 2 3 4輸出到檔案C或是65485 9 7 4輸出到檔案C 現在兩個檔案的指標應該在 1 2 2 0 ↑ 和 6 5 4 8 5 ↑ 我要怎麼把指標回歸到這一行的起頭 就是 1 2 2 0 ↑ 移回來 1 2 2 0 ↑ 以便我複製整行到檔案C去 對不起說明有點長!謝謝各位高手耐心的看完,替新手解答
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-05 10:48:52 IP:221.169.xxx.xxx 未訂閱
方法有幾種: 1.fgets 你可以查一下。 然後每一次讀進一行。 再每一行讀進來比對。比完把比較大或比較小的那行直接寫出去到C就可以了。 2.要移動檔案指標。 fseek(...) 查一下用法。 你就可以解決你的問題了。 PS. fseek 要用時,要用到絕對移動時,要先把檔案位置記起來,那要用到 ftell() 加油
jackyung
一般會員


發表:22
回覆:46
積分:13
註冊:2004-01-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-05 11:17:41 IP:218.171.xxx.xxx 未訂閱
試試以下的方法 FILE *ap; int p; char buff[50]; ap = fopen("A.txt","rt"); p = ftell(ap); fscanf(ap, "%s", buff); fseek(ap, p, SEEK_SET); fgets(buff,50,ap); fgets(buff,50,ap); fclose(ap);
系統時間:2024-06-26 13:34:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!