[英]c realloc - memory not allocated as i set it
我建立了一個函數,該函數將刪除我編寫的文本中的單詞,該函數有效,
但是由於某種原因,我會分配更多的內存,所以在完成后,它會打印出不帶單詞但帶有符號和亂碼的新字符串。
請幫助我了解為什么以及如何解決它,謝謝。
當我使用此命令調試內存更改時:
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';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.