Динамическое выделение памяти для строки в связанном списке
Я написал код ниже, но не могу получить желаемый результат.
//запуск программы
Вариант = 1
Наименование = Выборка
//Выход
НУЛЕВОЙ
Что я уже пробовал:
struct node{ char *name; struct node *link; }; struct node *head, *temp, *ptr; void getNameStart(){ temp = (struct node *) malloc (sizeof(struct node)); temp -> name = DynamicName(); temp -> link = head; head = temp; } void Print(){ temp = head; while(temp != 0){ printf("\n%s", temp -> name); temp = temp -> link; } } void DynamicName(){ char *name, c; int i=0, j=2; fflush(stdin); printf("\nEnter name : "); c = getchar(); name = (char *) malloc (sizeof(char)); while(c != '\n'){ name[i] = c; name = (char *) realloc (name, sizeof(char) * j); c = getchar(); i++, j++; } name[i] = '\0'; return name; } int main(){ head = 0; int i=0, op1; char op[5]; do{ printf("\nSelect option : "); printf("\n\n1. Insert at beginning\n2. Insert at end\n3. Insert anywhere"); printf("\n\nYour choice : "); scanf("%d", &op1); switch (op1){ case 1 : getNameStart(); break; } printf("\nInsert more nodes? : "); fflush(stdin); gets(op); } while(strcmp(op, "YES")==0 || strcmp(op, "yes")==0); printf("\n\nThe list is : "); Print(); }
Garth J Lancaster
вы прошли через свою программу с помощью отладчика и проверили содержимое ваших переменных ? если вы не можете, потому что не работаете в среде с отладчиком, вы можете использовать операторы printf () - например :-
temp - > name = DynamicName();
temp - & gt; link = head;
вставьте printf, чтобы проверить, возвращается ли имя из вашей функции DynamicName () - если вы ничего не получаете обратно из DynamicName, вот где вы начинаете искать
temp - > name = DynamicName();
printf ("name = [%s]\n", temp = & gt; name);
temp - & gt; link = head;
Я не уверен, что мне нравится ваша функция DynamicName или если она вообще работает - вы не сказали, какую среду вы используете, вы могли бы использовать getline () вместо того, чтобы заново изобретать колесо
Member 13037163
Я понял проблему, я использовал функцию void, которая пыталась вернуть значение.
Большое вам спасибо за помощь.