我有这张查询表:
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是一个结构,我必须将相同的变量传递给我的函数
答案 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并免费分配您的莫尔斯代码字符串,或使用固定大小的字符数组并直接复制到其中。