0

我正在尝试创建一个函数,将所选单词的指针从输入数组(allTerms)动态添加到最终返回的数组(myTerms)。指针指向 allWords 数组中的各个单词,并根据函数 (isTermNeeded) 选择要包含的单词(作为指向 allWords 的指针)。如何分配指向 myTerms 的指针并为其工作分配足够的空间?

这是我遇到问题的片段:

myTerms    = (char **)realloc(myTerms, (c+1)*sizeof(char *));
myTerms[c] = allTerms[i];

这是完整的功能:

char **getMyTerms(char **allTerms, char info[])
{
    int     i   =   0,
            c   =   0; // amount of terms selected

    char **myTerms; // array of selected terms

    while (allTerms[i])
    {
        if (isTermNeeded(allTerms[i], info))
        {
            myTerms     =   (char **)realloc(myTerms, (c+1)*sizeof(char *));
            myTerms[c]  =   &allTerms[i];

            c++;
        }

        i++;
    }

    return myTerms;
}

这是我收到的警告:

term.c:95:15: warning: incompatible pointer types assigning to 'char *' from 'char **'; remove & [-Wincompatible-pointer-types]
                        myTerms[c]      =       &allTerms[i];
                                        ^       ~~~~~~~~~~~~
1 warning generated.
4

1 回答 1

4

应该是这样的:

myTerms[c] = allTerms[i];

另外,请确保初始化myTerms,否则运行时可能会出现戏剧性问题realloc

char **myTerms = NULL;

在 C 中,您不应该从realloc以下任何一个中转换结果:

myTerms = realloc(myTerms, (c+1)*sizeof(char *));
于 2013-11-14T04:01:20.933 回答