问题遇到的现象和发生背景
想要现实的功能:链表插入时,每次都要输入数据,但发现打印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;
}
运行结果及报错内容
我想要达到的结果
请教博友:为什么第2次的scanf_s被吃掉了?!