選択した単語のポインターを入力配列 (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.