如何用malloc/calloc去造一個char[100000][50]大的array?

2007-10-30 4:05 am
我要做一個足夠放一本字典大的array
我把字典cut左做26parts,一part一個text file
format約係咁
a
ab
abc
....
我發現如果寫成 word[80000][50]的2d array會有error
但如果是 word[40000][50]就沒有問題...但又不夠裝
我發現malloc / calloc 2個function好像可以幫我解決這問題..但我又不會用...
主要是不會用 *...

我的主要任務是做一個文件分析program..
我已經把要分析的文件入了去一個array.
我想做spell check function 所以就想用字典的array的string "strcmp" 文件的string
就可以找到有沒有串錯字了..
但是卡在入不到字典到array內..
會做的拜託幫幫忙...我試了很久都做不到,.,..

還有..做好了array..要怎樣用這個array?

回答 (1)

2007-10-30 10:11 am
✔ 最佳答案
先答你第一部份。

第一部份,使用malloc開設一個超大的2 dimension array,由於本人沒有 c complier做testing,所以不擔保以下的code會work,但我相信方向是正確的,就算有bug都係少改就ok ,方法如下:

// ******** define the variables

long i;
long numOfVocab = 100000; // define total words in dictionary
int lengthOfEachVocab = 50; // define the length of each words
char **dictionary;

// ******** end of define the variables

// ******** create the huge array

**dictionary = (char **) malloc( numOfVocab * sizeof(char *) );

for(i = 0; i < numOfVocab - 1; i++)
dictionary[i] = (char *) malloc( lengthOfEachVocab * sizeof(char) );

// ******** end of create the huge array

// ******** assign the value into the dictionary

dictionary[0] = "A";
dictionary[1] = "AB";
dictionary[2] = "ABC";
......

// ******** end of Assign the value into the dictionary


至於第二部份,就要逐個逐個字去對,如你所說,要用strcmp去做。如果想快一點,可以設定字典中的字母索引:

例如:
dictionary[0] 是 A 的開始;
dictionary[847]是B的開始;

如此類推,當在字典中尋搜時,就可從這個索引開始,不必每次都要從dictionary[0] 開始。
參考: 對 C language 的認識


收錄日期: 2021-04-24 00:52:03
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20071029000051KK03400

檢視 Wayback Machine 備份