Я получил этот довольно простой код сборки с тремя различными подходами для хранения строки в узле связанного списка, но второй не работает
Сначала я создал узел структуры
struct node
{
char *data;
struct node *next;
};
и у меня есть функция printList
void printList(struct node *pointer)
{
while (pointer != NULL)
{
printf("%s ", pointer->data);
pointer = pointer->next;
}
}
, чем основные вещи, такие как голова, второй и третий, чтобы NULL;и голова, вторая и третья MALLOC;
struct node* head = NULL;
struct node* second = NULL;
struct node* third = NULL;
head = (struct node*)malloc(sizeof(struct node));
second = (struct node*)malloc(sizeof(struct node));
third = (struct node*)malloc(sizeof(struct node));
это моя первая попытка, ведьма работает нормально:
char tmp[3]; //3 just for the testcase, and demonstration
printf("What do you want to store: ");
scanf("%s", tmp);
printf("This is stored in tmp: %s\n\n", tmp);
head->data = tmp;
head->next = second;
это моя третья попытка, тоже работает отлично:
third->data = "cool";
third->next = NULL;
это было бы самым важным, но я не могу это исправить ...
printf("What do you want to store: ");
scanf("%s", second->data);
second->next = third;
printList(head); //calling the print function
причина, по которой я делаю этот шаг за шагом вместо цикла, состоит в том, чтобы увидеть, чточто происходит в этот момент ... Я знаю, что я мог бы использовать 1-ю попытку для 3-й, но есть ли способ не использовать временное хранилище строк, почему я не могу сказать:
пользователь хочет:"Google" (% s) хранится во втором-> данных;и сделано