gpt4 book ai didi

c realloc - 内存未按我设置分配

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:42 24 4
gpt4 key购买 nike

我构建了一个函数,可以删除我写的文本中的一个词,该函数有效,

但由于某种原因,内存比我分配的多,所以在我完成它后打印没有单词但带有符号和乱码的新字符串。

请帮助我理解为什么以及如何解决它,谢谢。

当我使用这个调试内存变化时:

newStr[k] = str[i];



char * newText(char * word, char *str)
{
int count = 0, indexS = -1,indexE = -1;
char *newStr = (char*)calloc(1,sizeof(char));
int w = 0, k = 0,i,i2;
if(strlen(word) > strlen(str))
printf("Error: the word dosent exist");
else
{
for (i = 0; i < strlen(str); i++)
{
if (str[i] != word[w])
{
newStr[k] = str[i];
k++;
newStr = realloc(newStr, k + 1);
}
else
{
i2 = i;
while (str[i2] != ' ' && str[i2] != '\0')
{
if (str[i2] == word[w])
{
count++;
w++;
i2++;
}
else
{
count = -1;
break;
}

}
if (strlen(word) == count)
{
i = i2;
if (str != '\0') i++; // space
}
else
{
newStr[k] = str[i];
k++;
newStr = realloc(newStr, k + 1);
}
count = 0;
w = 0;
}
}
}
str[k] = '\0';
return newStr;
}

最佳答案

您在返回之前将 '\0' 字符附加到错误的字符串末尾:

str[k] = '\0';

做到:

newStr[k] = '\0';

关于c realloc - 内存未按我设置分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46635957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com