Я пишу некоторые функции для строк, и у меня проблема с reallo c. Почему я получаю сообщение об ошибке realloc(): invalid pointer: 0x000...
Это моя структура строки:
typedef struct {
int length; /* Length of the String excluding '\0' */
char * string; /* pointer to string */
} string;
Это моя функция создания строки:
string string_create(char content[]) {
string localString;
localString.length = 0;
while (content[localString.length] != '\0') {
localString.length++;
}
localString.string = (char *)calloc((localString.length + 1), sizeof(char));
localString.string = content;
return localString;
}
Это моя строка функция вставки: (Функция с проблемами)
void string_insert(string * btstring, int index, char s[]) {
int stringLength = 0;
while (s[stringLength] != '\0') {
stringLength++;
}
if (stringLength > 0) {
btstring -> length += stringLength;
btstring -> string = (char *) realloc((btstring -> string), ((btstring -> length + 1) * sizeof(char)));
for (int i = 0; i < stringLength; i++) {
char c = s[i];
char temp[2] = {0, c};
int cindex = index + i;
while (btstring -> string[cindex] != '\0') {
temp[0] = btstring -> string[cindex];
btstring -> string[cindex] = temp[1];
temp[1] = temp[0];
cindex++;
}
temp[0] = btstring -> string[cindex];
btstring -> string[cindex] = temp[1];
temp[1] = temp[0];
cindex++;
btstring -> string[cindex] = temp[1];
}
}
}