如何在LInked列表中存储字符

时间:2015-05-29 09:42:05

标签: c

我在以下代码中遇到存储字符的问题。 它已编译但未将第2,第4,第6 ......字符作为输入。

struct ll {
    char data;
    struct ll *next;
};

以下是创建链接列表的代码。

struct ll* create_ll(struct ll *start){
    struct ll *p1,*p2;
    char a;
    printf("Enter q to stop\n");
    printf("Enter data:");
    scanf("%c",&a);
    while(a != 'q'){
    p1 = (struct ll*)malloc(sizeof(struct ll*));
    p1 -> data = a;
    if(start == NULL){
        start = p1;
        p2 = p1;
        p1 -> next = NULL;
        }
    else{
        p2 -> next = p1;
        p1 -> next = NULL;
        p2 = p1;
        }
    printf("Enter data:");
    scanf("%c",&a);;
    }
    return start;       
}

1 个答案:

答案 0 :(得分:1)

更改

scanf("%c",&a);

scanf(" %c",&a);
    // ^ Space here

您的scanf正在以<{1}}字符

的形式读取输入

你可能已经看过了,因为我怀疑程序每次输出\n两次。