У меня есть числа в связанном списке, который я должен преобразовать в char * и вернуться.связанный список встроен, но не работает должным образом
Здесь есть функция, в которой проблема, вероятно, существует.
char* int_str(struct Node** head,char* result) //head is pointer to singly linked list
{
struct Node* temp = *head;
char* string1="";
char* str;
while(temp != NULL)
{
string1=myitoa(temp->data,string1); // myitoa() works fine
str=(char*)malloc(1+strlen(string1));
strcpy(str,string1);
strcat(result,str);
temp=temp->next;
}
return result;
}
Последний вызов temp-> данных всегда заканчивается с неизвестными значениями мусора. (Связанный список построен правильно, как печать связанный список работает должным образом).
Пример: связанный список 1-> 2-> 3
Последний вызов TEMP-> данные в функции дает 50 (некоторые из мусора значение) т.е. 1-> 2-> 50
в то время как в основной функции список правильно дает 1-> 2-> 3
последняя переменная заканчивается как мусор в этой функции, но показывает правильно в основной функции, почему?
string1 не инициализируется Как это должно работать? – chmike
myitoa() возвращает char * каждый раз, когда он вызывается – solinvictus
, у вас есть утечка памяти с помощью str. Вы не освобождаете выделенный блок.Почему не просто 'strcat (result, string1)' – chmike