scanf
을 사용하여 연결된 목록의 char 포인터에 여러 번 입력하려고합니다. 그러나 새 입력을 입력 할 때마다 모든 필드에서 name
변경됩니다.linked list char pointer scanf 입력
struct node *root = NULL;
while (1) {
char arrays[12];
char *n;
n = arrays;
int i = NULL;
printf("Enter level: ");
scanf("%i", &i);
printf("\nEnter name: ");
scanf("%s", arrays);
insert(&root, i, n, compare);
display(root);
}
삽입 기능 : 여기
struct node {
struct node *next;
int level;
char *name;
};
내 주요 기능입니다 : 여기
내 링크 목록입니다 기본적으로
void insert(struct node **head, const int level, char *name, int(*cmp)(struct node *l, struct node *r))
{
struct node *new;
new = malloc(sizeof *new);
new->level = level;
new->name = name;
/* Find the insertion point */
for (; *head != NULL; head = &(*head)->next)
{
if ((*head)->level > level || (*head)->level == level && cmp(*head, new) > 0) { break; }
}
new->next = *head;
*head = new;
}
경우 I 입력 :
input: | expected output: | actual output:
1 smith | 1 john | 1 alice
1 john | 1 smith | 1 alice
3 malek | 2 alice | 2 alice
2 alice | 3 malek | 3 alice
참고 : 기능은 수동으로하지 않고 내가 데이터를 입력있을 때 예상대로 작동 scanf
예 :
insert(&root, 1, "Abbas", compare);
insert(&root, 1, "Calbass", compare);
나를 용서해달라고 부탁하지만, 당신의'main()'메쏘드의 무한 루프가 끝날 길이 없다고 생각합니다. 또한,'insert' 함수에 대한 코드를 보여 주어야합니다. –
삽입 및 표시 기능을위한 코드를 제공합니다 .... – Rupsingh
@TimBiegeleisen 맞지만 무한 루프는 디버깅 목적으로 만 사용되었습니다. – Poorya