柒seven. 2024-07-18 17:46 采纳率: 100%
浏览 4
已结题

vc2010使用结构体数组遇到异常报错

vc2010使用结构体数组遇到以下报错
1>structure.c(35): error C2440: “初始化”: 无法从“student”转换为“char”
在在线编译器内运行无问题
完整代码如下

#include<stdio.h>
#include<string.h>
struct student
    {
        char name[100];
        int age;
    };
int main()
    {
    struct student st1 = {"张三",18};
    struct student st2 = {"李四",19};    
    struct student st3 = {"王五",20};
    struct student strArr[3] = {st1,st2,st3};
    int i;
    for(i=0;i<3;i++)
    {
        printf("学生的名字为:%s;学生的年龄为:%d\n",strArr[i].name,strArr[i].age);
    
    }
    return 0;
}

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-18 17:53
    关注

    引自免费微信小程序:皆我百晓生

    你的问题是在尝试初始化结构体数组时遇到的错误。在 VC2010 中,你尝试将一个结构体(student)的实例赋值给一个结构体数组(strArr)。但是在 C 语言中,你不能直接使用这种方式来初始化结构体数组的元素。

    错误的原因在于你在初始化结构体数组时,尝试将一个结构体实例("张三", 18)直接赋值给数组的一个元素,这是不允许的。你需要逐个初始化数组的每个元素。以下是正确的初始化方式:

    struct student strArr[3] = {
        {"张三", 18},
        {"李四", 19},
        {"王五", 20}
    };
    

    另外,你应该确保编译器和在线编译器的设置一致,以便程序可以在两个环境下都正常工作。请注意 C 语言在不同的编译器和环境下的标准可能会有所不同,尤其是在新标准或特定平台特性的实现上。VC2010在某些地方可能会严格一些,而在在线编译器中可能使用了不同的编译器版本或设置。所以即使在线编译器没有问题,也需要确保你的本地环境设置正确。如果可能的话,尽量使用最新版本的编译器以确保代码的正确性和兼容性。

    总的来说,你的代码应该像这样修改:

    #include<stdio.h>
    #include<string.h>
    struct student {
        char name[100];
        int age;
    };
    int main() {
        struct student strArr[3] = {{"张三", 18}, {"李四", 19}, {"王五", 20}}; //逐个初始化数组元素
        int i;
        for(i = 0; i < 3; i++) { //遍历数组并打印每个学生的信息
            printf("学生的名字为:%s;学生的年龄为:%d\n", strArr[i].name, strArr[i].age);
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月18日
  • 已采纳回答 7月18日
  • 创建了问题 7月18日

悬赏问题

  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开