这是代码段。字典格式为:{Word Word n Word Word n ...}
该程序在第二次重新分配2D阵列Rowords时似乎失败了,我不能这么做。
在声明中:char ** rowords = null,** enwords == null;
while (fgets(buffer, 100, dictionary))
{
counter++;
roWords = (char**)realloc(roWords, sizeof(char*)* counter );
enWords = (char**)realloc(enWords, sizeof(char*)* counter );
p = strtok(buffer, " n");
roWords[counter - 1] = NULL;
roWords[counter - 1] = (char*)realloc(roWords, sizeof(char)* strlen(p));
strcpy(roWords[counter - 1], p);
p = strtok(NULL, " n");
enWords[counter - 1] = NULL;
enWords[counter - 1] = (char*)realloc(enWords, sizeof(char)* strlen(p));
strcpy(enWords[counter - 1], p);
}
解决方案是:
while (fgets(buffer, 100, dictionary))
{
counter++;
if (counter == 1)
{
roWords = (char**)malloc(sizeof(char*));
enWords = (char**)malloc(sizeof(char*));
}
else
{
roWords = (char**)realloc(roWords, sizeof(char*)* counter);
enWords = (char**)realloc(enWords, sizeof(char*)* counter);
}
p = strtok(buffer, " n");
roWords[counter - 1] = (char*)malloc(sizeof(char) * (strlen(p) + 1));
strcpy(roWords[counter - 1], p);
roWords[counter - 1][strlen(p)] = ' ';
p = strtok(NULL, " n");
enWords[counter - 1] = (char*)malloc(sizeof(char)* (strlen(p) + 1));
strcpy(enWords[counter - 1], p);
enWords[counter - 1][strlen(p)] = ' ';
}