C语言,请教下链表与scanf的打印问题。

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

想要现实的功能:链表插入时,每次都要输入数据,但发现打印3次,计算机只叫我输入2次。而且没办法打印中文。

问题相关代码,请勿粘贴截图
//定义全局变量
static int length = 0;

//定义数据域
typedef struct Data
{
    char name;
    int num;

}List_data;

//定义指针域
typedef struct field
{
    List_data Data;
    field* next;

}List_field;

//创建头节点
List_field* middlehead(void)
{
    List_field* headnode = (List_field*)malloc(sizeof(List_field));
    headnode->next = NULL;
    
    return headnode;
}

//创建中间结点
List_field* middlehead(int data)
{
    List_field* node = (List_field*)malloc(sizeof(List_field));
    node->Data.num = data;
    printf("请输入记录的数据:\n");
    scanf_s("%c", (char*)&node->Data.name, sizeof(node->Data.name));
    printf("*********\n");

    node->next = NULL;
    return node;
}

//打印函数
void printflist(List_field* headnode)
{
    List_field* printfdata = headnode->next;
    while (printfdata)
    {
        printf("编号为:%d,数据为:%c\n", printfdata->Data.num, printfdata->Data.name);
        printfdata = printfdata->next;
    }
    printf("\n");

}

//插入节点
void listinser(List_field* node, int data)
{
    List_field* listData = middlehead(data);
    listData->next = node->next;
    node->next = listData;

    length++;
}

//主函数
int main(void)
{
    List_field* list = middlehead();

    listinser(list, 1);
    listinser(list, 5);
    listinser(list, 3);
    printflist(list);
    printf("%d\t", length);
    //listdelet(list,5);
    printflist(list);

    return 0;
} 

运行结果及报错内容

img

我想要达到的结果

请教博友:为什么第2次的scanf_s被吃掉了?!

知道问题在哪个,是%c的问题。