Я новичок в отношении C, я надеюсь, что кто-то может мне помочь. Итак, я пытался изменить значение имени строки на другое значение, но когда распечатывается список, значение строки не меняется, когда я вводю значение с помощью scanf
. Если я, например, вставлю значение вручную, как это, с помощью функции push(&head, "Carlos")
, то значение имени изменится.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Node{
char *name;
struct Node *next;
};
void printList(struct Node *n){
while (n != NULL){
printf(" name: %s \n ", n->name);
printf("....................................\n");
n = n->next;
}
}
void push(struct Node **head_ref, char *name){
struct Node *new_node = (struct Node *)malloc(sizeof(struct Node));
new_node->name = name;
new_node->next = (*head_ref);
(*head_ref) = new_node;
}
int main(){
struct Node *head = NULL;
char name[20];
printf("Insert a name");
scanf("%s", name);
push(&head, name);
printf("Insert a new name");
scanf("%s", name);
push(&head, name);
push(&head, "Carlos");
printList(head);
return 0;
}
Если я введу два имени, таких как: «nadia», «pedro», результат будет следующим:
Output:
Carlos
....................................
pedro
....................................
pedro
....................................
Результат, который я хочу получить, будет следующим:
Output:
Carlos
....................................
pedro
....................................
nadia
....................................