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

使用数组创建多个结构体实例失败,无法存储或打印数据求助

结构体数组代码问题分析与修正

你的代码存在几个关键错误,直接导致程序崩溃或无法正常输出,具体问题和修正方案如下:

错误点梳理

  • strcpy参数顺序完全颠倒:strcpy的语法是strcpy(目标地址, 源字符串),你写的strcpy("thing", t[1].c)试图往只读的字符串常量"thing"中写入数据,这会触发未定义行为,程序会直接崩溃,printf语句根本没有执行的机会。
  • 冗余无效的声明:struct testing;这行代码没有任何实际作用,属于无效声明,直接删除即可。
  • 非标准的main函数写法:标准C要求main函数的返回类型必须是int,而非void,且函数末尾需要返回状态值。
  • 字符串缓冲区溢出风险:"thing"包含5个字符加上字符串结束符\0,总共需要6个字节的存储空间,但你定义的char c[5]只能容纳4个字符加结束符,会导致缓冲区溢出,同样触发未定义行为。

修正后的代码

// 结构体数组示例
#include <stdio.h>
#include <string.h>

struct testing
{
    int a;
    int b;
    char c[6]; // 调整长度以容纳"thing"和结束符
} t[3];

int main()
{
    t[1].a = 10;
    t[1].b = 20;
    strcpy(t[1].c, "thing"); // 修正strcpy参数顺序

    printf("%d %d %s\n", t[1].a, t[1].b, t[1].c);
    return 0; // 标准main函数需要返回值
}

运行结果

修正后的代码会正常输出:

10 20 thing

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:55:46