退出函数时,无法维护保存在2D char数组中的字符串

时间:2016-12-13 20:46:10

标签: c arrays string pointers char

我想在一个char指针数组中保存字符串。不幸的是,当我返回主程序并尝试打印数组的内容时,值' s并不像预期的那样。

我希望为所有ASCII值保存编码,以便我可以对文件进行编码。它基于霍夫曼树,但我省略了不相关的代码。

主要关注的部分

char ** encodings;
encodings = calloc(256, sizeof(char*));
walk_tree(root,)

我正在保存编码的功能

void walk_tree(struct huffnode * root, char * encoding, char ** encodingsArray)
{
    if(root->is_leaf)
    {
        encodingsArray[root->c] = encoding;
        puts(encodingsArray[root->c]) // this prints valid value
    }
    else
    {
        char temp [256];          //below is code to get the encodings, dont worry about it
        strcpy(temp, encoding);
        strcat(temp, "0");
        walk_tree(root->left, temp, encodingsArray);
        //go right
        strcpy(temp, encoding);
        strcat(temp, "1");
        walk_tree(root->right, temp, encodingsArray);
    }
}

1 个答案:

答案 0 :(得分:0)

encodingsArray[root->c] = encoding;-> encodingsArray[root->c] = strdup(encoding);                     –́BLUEPIXY