数据结构顺序表的创建出现了问题,希望帮小的看看

问题遇到的现象和发生背景

在creatlist函数里,scanf不能获取字符,一输入a,b,c等字符就跳出,不知道是哪里出现了问题!

问题相关代码,请勿粘贴截图

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
    char data[10];
    int length;
}SqList;
    void initlist(SqList &L)
{        for(int i=0;i<20;i++)
            L.data[i]=0;
        L.length=0;
}
    void creatlist(SqList &L)
{        int x=0;
         printf("输入几个:\n");
        scanf("%d",&x);
        printf("输入数据\n");
        for(int i=0;i<x;i++)
        {    scanf("%c",&L.data[i]);
            L.length++;
        }
}

int main()
{
    SqList L;
    initlist (L);
    creatlist(L);
    for(int i=0;i<L.length;i++)
        printf("%c\n",L.data[i]);
    
return 0;
}
运行结果及报错内容

scanf 获取不了字符

那么你是怎么输入数据的呢?
代码里要求先输入数据的长度,必须是个int
然后再输入数据
你是不是直接输入abc了

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct{
    char data[10];
    int length;
} SqList;

void initlist(SqList *L)
{
    memset(L, 0, sizeof(SqList));
}

void creatlist(SqList *L)
{
    int x = 0, i = 0;
    printf("输入几个:\n");
    scanf("%d", &x);
    printf("输入数据\n");
    for(i = 0; i < x; ++i)
    {
        scanf("%c",&L->data[i]);
        L->length++;
     }
}
 
int main()
{
    SqList L;
    int i;

    initlist(&L);
    creatlist(&L);

    for(i = 0; i < L.length; ++i)
        printf("%c\n", L.data[i]);
    
    return 0;
}

修改如下,供参考:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
    char data[20]; //data[10];
    int  length;
}SqList;
void initlist(SqList &L)
{
    for(int i=0;i<20;i++)
        L.data[i]=0;
    L.length=0;
}
void creatlist(SqList &L)
{
    int x=0;
    printf("输入几个:\n");
    scanf("%d",&x);
    printf("输入数据:\n");
    for(int i=0;i<x;i++)
    {
        getchar();       //修改
        scanf(" %c",&L.data[i]);//修改
        L.length++;
    }
}
int main()
{
    SqList L;
    initlist (L);
    creatlist(L);
    for(int i=0;i<L.length;i++)
        printf("%c\n",L.data[i]);
    return 0;
}

你结构上 char data[10];为10个元素,你init函数上面循环是20个