我试图复制一个char word[50]
数组到char **wordlist
双指针,然后realloc(wordlist, (numwords+1)*sizeof(char*))
将单词表的大小再增加一个char*
以保存下一个word
。C:双指针的Realloc问题
我不断收到一个错误*** glibc detected *** ./program: realloc(): invalid next size
我声明它作为wordlist = realloc(wordlist, (numwords+1)*sizeof(char*))
void outFile(char *argv[], char **wordlist)
{
if((inFilePtr = fopen(argv[2], "r")) != NULL)
{
if((outFilePtr = fopen(endOfFile, "w")) != NULL)
{
while((c = fgetc(inFilePtr)) != EOF)
{
if(!(isspace(c)))
{
word[wordIndex] = c;
wordIndex++;
rowLim++;
}
if(isspace(c))
{
wordIndex = 0;
if(rowLim < limit)
{
rowLim++;
strcat(text[rowNum], word);
strcat(text[rowNum], " \0");
wordlist[numwords] = strdup(word);
/*strcat(wordlist[numwords], "\n\0");*/
memset(word, 0, 50);
prev = rowLim;
wordlist = realloc(wordlist, (numwords + 1)*sizeof(char*));
numwords++;
}
else
{
strcat(text[rowNum], "\n\0");
printf("text[%d] = %s",rowNum, text[rowNum]);
fputs(text[rowNum], outFilePtr);
rowNum++;
strcat(text[rowNum], word);
strcat(text[rowNum], " \0");
/*strcat(wordlist[numwords], word);
strcat(wordlist[numwords], "\n\0");
wordlist = realloc(wordlist, (numwords + 1)*sizeof(char*));*/
numwords++;
memset(word, 0, 50);
rowLim = rowLim - prev;
}
wordIndex = 0;
}
}
strcat(text[rowNum], "\n\0");
printf("text[%d] = %s",rowNum, text[rowNum]);
fputs(text[rowNum], outFilePtr);
fclose(outFilePtr);
}
这是怎么回事?你能提供更多细节吗? –
但numwords被初始化为0,那么总是不会分配空间? –
@PythonNoob发布一个MCVE。你在程序的其他地方犯了一个错误,但不可能说出来,因为你没有显示其他程序。 –