2009-11-17 43 views
0

我有這個查找表:查找表在c

char * table [ascii] [morse];

其中ascii是一個int(表示一個ascii字母),而morse是一個長度爲4 + 1的字符串(用於添加null)。這是一個查詢表格,你要求字母0 = a,它應該返回它的莫爾斯聲明。

如果我有 a ..-。 (例如)在一個文件中。 ,我想把這個添加到索引(ascii)= 0的查找表中,我該怎麼做。 此外,我如何打印查找表中的所有信息:0> ..-。等

如果你沒有得到的問題,請告訴我,我怎麼能解釋更多:)

的代碼,我現在把字符在查詢表(它是錯誤的):

void ascii-morse (Lookuptable *table, char ascii, char *morsepassed) { 
    int index = ascii - 'a'; 
    char copy[5]; 
    strcpy(copy, morsepassed); // we need to copy the morse passed 
    table->table[index][5] = copy; 
} 

請注意,LookupTable中是一個結構,而我必須有相同的變量通過這種方式給我的功能

回答

1

strcpy(table->table[(int)ascii], morsepassed)似乎是這樣做(什麼是「指數」應該是這樣設置爲?也許到(int)ascii?我沒有看到點)。

0

table->table[index][5] = copy; 

是錯的 - 你不要複製字符串方式C.這是否幫助?你也忘了初始化'索引'。

0

您的變量「copy」位於堆棧中,當函數退出並且指針指向垃圾時,它將消失。

您需要使用malloc並自由分配您的莫爾斯碼字符串,或者使用固定大小的字符數組並將其直接複製到該字符串中。

3

表格的定義有些不對。你有這樣的:

char *table[ascii][morse]; 

哪個(假設「ASCII」是26,而「摩斯」是5)是26個* 5指針到字符表。實際上,你只是想26 * 5個字符(5個字符的每個字母):

然後你就可以改變你的函數使用這個值複製到表:

strcpy(table->table[index], morsepassed);