c中的查找表

时间:2009-11-17 20:54:23

标签: c

我有这张查询表:

char * table [ascii] [morse];

其中ascii是一个int(表示一个ascii字母),而morse是一个长度为4 + 1的字符串(用于添加null)。这是一个查询表,你要求写一个字母0 = a,它应该返回它的morse represntation。

如果我有的话 一个 ..-。 (例如)在文件中。 我想将其添加到查找表中,其中index(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是一个结构,我必须将相同的变量传递给我的函数

4 个答案:

答案 0 :(得分:3)

你的表的定义有点不对。你有这个:

char *table[ascii][morse];

其中(假设“ascii”为26,“莫尔斯”为5)是一个26 * 5指向char的表。你实际上只想要26 * 5个字符(每个字母表中有5个字符):

char table[ascii][morse];

然后你可以改变你的函数来使用它来将值复制到表中:

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

答案 1 :(得分:1)

strcpy(table->table[(int)ascii], morsepassed)似乎是这样做的方式(什么是“索引”应该设置为?可能是(int)ascii?我没有看到这一点。)

答案 2 :(得分:0)

该行

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

是错误的 - 你不会在C中复制字符串。这有帮助吗?你也忘了初始化'index'。

答案 3 :(得分:0)

你的变量“copy”在堆栈上,当函数退出并且你的指针指向垃圾时它会消失。

您需要使用malloc并免费分配您的莫尔斯代码字符串,或使用固定大小的字符数组并直接复制到其中。