我有3个数据字段,用“,”分隔。我使用wcstok来分隔它们 b是一个双指针,当wcstok创建一个新元素时会重新分配。 当使用realloc b与第一个元素“我是一名大学生”时,它正常工作。但当pc指向第二个元素“我住在加拿大”。 b无法重新分配。
int n = 0;
wchar_t a[] = L"I am a college student, I live in Canada, I love ice cream";
wchar_t** b = NULL;
wchar_t** temp2 = NULL;
wchar_t* pc = wcstok(a, L",");
while (pc)
{
n++;
temp2 = (wchar_t**)realloc(b, n * sizeof(wchar_t*));
if (!temp2)
{
for (int k = 0; k < n; k++)
{
free(b[k]);
b[k] = NULL;
}
free(*b);
*b = NULL;
}
b = temp2;
b[n - 1] = (wchar_t*)malloc(((wcslen(pc)+1) * sizeof(wchar_t)));
wcsncpy(b[n-1], pc, 1000);
b[n - 1][wcslen(pc)] = '\0';
pc = wcstok(NULL, L",");
}