如何產生某個檔案內容的行號及字元出現的位置

輸入一個檔案的名稱: 123.txt

這個123檔案的內容為:

001The elementary schools in Taiwan have begun teaching English,

002 but it is difficult for those schools in remote,

003 ...

004 ...

005 ...

索引表的結果為:

.......

schools 1-16(意指第一行的第十六個字元出現過), 2-31

......

請用C程式表達~~~麻煩各位大家的幫忙!!請高手給點提示,謝謝!!

Update:

不好意思喔!!謝謝您的提示,但是你所說的方式,我都還沒交過,所以我依然不會寫,所以是否可以麻煩高手幫忙解題??

1 Answer

Rating
  • 1 decade ago
    Favorite Answer

    由於出現的單字個數不定, 且出現的次數也不定, 所以要用到兩個 linked list...

    例如單字位置的 node:

    typedef struct _wordpos {

    int line; // 第幾行

    int chidx; // 第幾個字元

    struct _wordpos *next; // 指到下一筆

    } WORDPOS;

    紀錄單字的 node:

    typedef struct _theword {

    char *word; // 另外宣告記憶體存放單字

    WORDPOS *pos; // 單字出現的位置 list

    struct _theword *next; // 指到下一筆

    } THEWORD;

    關於 list 的相關函式 (增/刪/釋放記憶體), 您就自己寫囉 ^^

    接下來就是讀出檔案內容的部份, 您可以使用 fopen(), fclose() 開/關檔案, 用 fgetc() (一個一個字讀) 或 fgets() (一次讀一整行) 讀取檔案內容. 在讀取的時候就要注意紀錄目前行數和當行字元數, 並且把單字切割出來.

    觀念大概就醬子而已吧! ^^

Still have questions? Get your answers by asking now.