我是stackoverflow的新手。标题是我的问题。有人可以帮我这个。谢谢。我已经为此工作了3天。
这部分代码将文件编码为霍夫曼代码
void encode(const char *s, char *out)
{
while (*s) {
strcpy(out, code[*s]);
out += strlen(code[*s++]);
}
}
这部分代码将文件从霍夫曼代码解密为人类可读代码
void decode(const char *s, node t)
{
node n = t;
while (*s) {
if (*s++ == '0') n = n->left;
else n = n->right;
if (n->c) putchar(n->c), n = t;
}
putchar('\n');
if (t != n) printf("garbage input\n");
}
这部分是我收到错误的地方。
int main(void)
{
int i;
const char *str = "this is an example for huffman encoding", buf[1024];
init(str);
for (i=0;i<128;i++)
if (code[i]) printf("'%c': %s\n", i, code[i]);
encode(str, buf); /* I get the error here */
printf("encoded: %s\n", buf);
printf("decoded: ");
decode(buf, q[1]);
return 0;
}
答案 0 :(得分:1)
在另一行中声明'buf',而不是'const':
char buf [1024];
答案 1 :(得分:1)
const
适用于该行的所有声明,因此您将buf
声明为const char[1024]
。这意味着调用encode
会抛弃常量,从而产生警告。
避免在同一行上有多个变量声明,除非它们都完全相同的类型。