You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言链表create函数调用后终端重复要求输入问题求助

问题修复方案

核心问题原因

你遇到的需要两次输入的问题,根源是create函数内scanf的格式字符串存在多余空格:

scanf("%d ",&num);

%d后的空格属于scanf格式控制中的空白符,这类字符会指示scanf跳过输入流中任意数量的连续空白(包括回车、空格、制表符),直到匹配到第一个非空白字符才会结束本次读取。因此你输入节点数值按下回车后,scanf仍在等待非空白输入触发终止,才会出现要求二次输入的现象。

修复方式

直接删除%d后的空格即可:

scanf("%d",&num);

额外潜在问题修复

你当前代码还存在内存分配错误的隐患:

newnode = (struct node *)malloc(sizeof(struct node *));

此处sizeof取的是结构体指针的大小(通常为4/8字节,由系统位数决定),远小于存储struct node整个结构体需要的空间,后续给结构体成员赋值会触发内存越界,引发未定义行为。正确写法应为:

newnode = (struct node *)malloc(sizeof(struct node));

内容的提问来源于stack exchange,提问作者Rishi Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:06:05