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

使用结构体获取好友姓名与出生日期的程序出现垃圾值问题

程序输出垃圾值的常见成因
  • 结构体变量未初始化
    定义结构体变量时如果没做初始化,成员会保留内存里的随机垃圾数据。如果输入操作失败,这些垃圾值就会被直接输出。

  • 输入函数参数错误
    使用scanf读取数据时,最容易踩的坑是没传对变量的地址:比如读取出生日期的dd/mm/y时,漏加&符号,导致scanf无法把输入值写入对应的结构体成员,成员还是初始的垃圾值。另外,格式控制符和变量类型不匹配(比如用%s读整数)也会导致输入失败。
    举个错误示例:scanf("%s %d %d %d", friend.name, friend.dob.dd, friend.dob.mm, friend.dob.y);这里friend.dob.dd没加&,完全读不进值。

  • 结构体定义或变量引用错误
    比如嵌套的dob结构体成员类型定义错误(比如把int写成char),或者输出时写错了成员名(比如把friend.dob.y写成friend.y),都会导致访问错误的内存区域,读出垃圾值。

  • 内存溢出(可能性较低但需排查)
    如果存储姓名的字符数组长度不够,输入的字符串可能溢出,覆盖掉dob成员的内存,导致日期数据被破坏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:45:41