【发布时间】:2017-01-07 10:29:56
【问题描述】:
函数得到一个句子,需要在'n'个单词之间进行替换。 当它来到第一次重新分配时,程序停止并显示错误。 我尝试了很多句子的组合,我要求的新记忆比现有记忆大。
我的功能:
void Reverse(char **sentence, int n)
{
int m;
char *temp;
for (m = 0; m < n; m++, n--)
{
temp = (char*)malloc(strlen(sentence[m]) * sizeof(char));
temp = sentence[m];
sentence[m] = (char*)realloc(sentence[m], strlen(sentence[n]) * sizeof(char));
sentence[m] = sentence[n];
sentence[n] = (char*)realloc(sentence[n], strlen(temp) * sizeof(char));
sentence[n] = temp;
free(temp);
printf("%s ", sentence[m]);
}
}
【问题讨论】:
-
你发现了什么错误?
-
除非你真的知道自己在做什么,否则用
strlen(x)分配足够的空间太短了。