中文偽春菜後援會論壇  

打印

[問題] AYA FREAD 讀取檔案問題

AYA FREAD 讀取檔案問題

我的程式碼:
複製內容到剪貼板
代碼:
        FCHARSET(1);
        _file = FOPEN('./data/word1.dat','r');
        _txt = FREAD('./data/word1.dat');
        "%(_txt[0]),%(_txt[1])";
        FCLOSE(_file);
不過還有錯誤。

每次運作只取出一行。
我想一整次都取出,可是目前無法得知:
目前有幾行 & 當 _txt 傳回 -1 時,下次要怎樣設定才會重新開始。

各位大大,我應該如何調整程式碼?

[ 本帖最後由 elct9620 於 2008-7-7 16:20 編輯 ]

TOP

請使用迴圈吧...
複製內容到剪貼板
代碼:
        FCHARSET(1);
        _str = '';
        _file = FOPEN('./data/word1.dat','r');
        while (_txt = FREAD('./data/word1.dat')) != -1 {
                _str += "%(_txt[0]),%(_txt[1])\n";
        }
        FCLOSE(_file);
至於要如何重新開始
請使用FSEEK函式
這也是同C語言的標準IO程式
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

引用:
原帖由 時原砂 於 2008-7-7 19:41 發表
請使用迴圈吧...        FCHARSET(1);
        _str = '';
        _file = FOPEN('./data/word1.dat','r');
        while (_txt = FREAD('./data/word1.dat')) != -1 {
                _str += "%(_txt[0]),%(_tx ...
謝謝解答。
感覺我迴圈是有地方寫錯,所以才沒有效果!? (上面那個迴圈我有寫到很接近的狀態)

↑使用後發現,大概是我迴圈沒錯。 字串傳回時寫錯。
最後應該如何輸出字串呢?
打上 _str 無效果。

最後用 On讀取 呼叫放置 以上語法的 List 然後成功列出。

其實我讀PHP比C還多
--- 讀 C 的時候因為有很多人要考二基,所以我怕被老師沒收從學校圖書館借來的C++教學書
--- 學校電腦書不多,不過大部分都是好書 (雖然國三之後就沒去借了...)

[ 本帖最後由 elct9620 於 2008-7-7 21:37 編輯 ]

TOP

這個嘛...
你用FREAD取得的資料應該是一字串
而不是一陣列
複製內容到剪貼板
代碼:
freadTest
{
        FCHARSET(1);
        _txt = '';
        _ret = FOPEN('./data/word1.dat','r');
        if _ret == 1 {
                while (_str = FREAD('./data/word1.dat')) != -1 {
                        _txt += "%(_str)\n";
                }
                FCLOSE('./data/word1.dat');
        }
        _txt;
}
用我的習慣重改了一下
就這樣參考一下吧

[ 本帖最後由 時原砂 於 2008-7-8 03:25 編輯 ]
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

剛開始我也懷疑為什麼是陣列。
不過→aya_shiori3.dic 裡面運用 FREAD的語法也是陣列。
而且對照裡面抓取的descript.txt檔案,組成方式又和我的檔案相似。
所以判對為陣列 (遭毆)

不過為什麼多一個判斷 FOPEN 的語法,就可以讓字串正常顯示?
沒有放上去時, _str 這類語法根本顯示不出來。 (還是我變數打錯了!?)

TOP

不對...並不是判斷FOPEN是否成功的問題
而是FREAD的所取得的資料確實是個字串而非陣列
你會以為那是陣列
是因為AYA有兩種陣列型態
一種是泛用陣列
也就是一般程式語言理解的陣列
一種是簡易陣列
這種陣列只是找出字串中的逗號
然後再根據逗號的分隔來回傳各字串
參看這裡...
http://cuc2.idv.tw/wiki/index.ph ... 7%E6%9B%B8#v3bd929b

簡易陣列是AYA4舊版所留下來的早期替代規格
經常會有人把它跟AYA5的泛用陣列搞混
這點請注意一下...

[ 本帖最後由 時原砂 於 2008-7-8 09:40 編輯 ]
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

引用:
原帖由 時原砂 於 2008-7-8 09:37 發表
不對...並不是判斷FOPEN是否成功的問題
而是FREAD的所取得的資料確實是個字串而非陣列
你會以為那是陣列
是因為AYA有兩種陣列型態
一種是泛用陣列
也就是一般程式語言理解的陣列
一種是簡易陣列
這種陣列只是找出字 ...
看起來我沒有很認真看說明文件
--- 我老是大概看看 (誤)

TOP



當前時區 GMT+8, 現在時間是 2020-9-25 08:39

Processed in 0.015302 second(s), 9 queries, Gzip enabled.

清除 Cookies - 聯繫我們 - 中文偽春菜後援會 - Archiver - WAP - TOP - 界面風格