| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3023 人关注过本帖
标题:C++代码运行报错不知道哪里的问题
只看楼主 加入收藏
成cc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2022-1-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
C++代码运行报错不知道哪里的问题
新建了一个函数,函数参数包括了结构体的数组。在函数体内给结构体整形变量赋值时程序运行正常,但是给字符串变量赋值时程序运行报错。
程序代码:
#include<iostream>
using namespace std;
#include<string>


//创建学生的结构体
struct student
{
    //学生的姓名
    string sname;
    //成绩
    int score;

};

//创建老师的结构体
struct teacher
{
    //老师的姓名
    string Tname;
    //定义学生的结构体数组
    struct student stu[5];
};


//函数功能:给tea结构体数组赋值
void set(struct teacher tea[],int len)
{
    

    string s = "ABCDE";
    for (int i = 0; i < len; i++)
    {
        //tea[i].stu[i].sname = "aa";    //运行此行代码会报错
        tea[i].stu[i].score = 100;        //可以正常写值






        //tea[i].Tname = "teacher_";
        //tea[i].Tname += s[i];

        //for (int j = 0; j < 5; j++)
        //{
        //    tea[i].stu[j].Sname = "student_";
        //    tea[i].stu[j].Sname += s[j];

        //    tea[i].stu[j].score = 60;

        //}

    }

}





int main() {

    /*
    学校正在做毕业设计项目,每名老师带5位学生,总共3名老师,需求如下
      设计学生和老师的结构体,其中老师的结构体中,有老师的姓名和存放5名学生的数组作为成员
    ,学生的成员有姓名、考试分数,创建数组存放3名老师,通过函数给每个老师及所带的学生赋值,
    最终打印出老师数据以及老师所带的学生数据。
    */

    //定义老师结构体数组
    struct teacher teaArray[3];

    
    //通过函数对老师数组赋值
    int len = sizeof(teaArray) / sizeof(teaArray[0]);    //计算数组的长度
    set(teaArray,len);




    //打印输出结果
    //for (int i = 0; i < 3; i++)
    //{
    //    
    //    for (int j = 0; j < 5; j++)
    //    {
    //        cout << "第" << i + 1 << "个老师及学生的信息";
    //        cout <<  "老师的姓名:  " << tea[i].name << endl;
    //        cout <<  "老师的第" << j+1 << "个学生的姓名"  << tea[i].stu[j].name << endl;
    //        cout <<  "老师的第" << j + 1 << "个学生的成绩" << tea[i].stu[j].score << endl;
    //    }
    //}





    

    system("pause");
    return 0;
}
搜索更多相关主题的帖子: int 结构体 stu 老师 学生 
2022-01-29 17:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
没用的别贴,我帮你把代码中无用的行删除后,如下
#include <iostream>
#include <string>
using namespace std;

struct student
{
    string sname;
    int score;
};

struct teacher
{
    string Tname;
    struct student stu[5];
};

void set( struct teacher tea[], size_t len )
{
    for( size_t i=0; i!=len; ++i )
    {
        tea[i].stu[i].sname = "aa";    //运行此行代码会报错
        tea[i].stu[i].score = 100;
    }
}

int main()
{
    struct teacher teaArray[3];
    size_t len = sizeof(teaArray) / sizeof(teaArray[0]);
    set(teaArray,len);
}


虽然代码很奇怪,比如
    for( size_t i=0; i!=len; ++i )
    {
        tea[i].stu[i].sname = "aa";    //运行此行代码会报错
        tea[i].stu[i].score = 100;
    }

但只要你的 struct teacher teaArray[3]; 不超过5个元素,那它并没有语法和逻辑错误。

你还是把你出错的代码的贴出来看看吧,没错的就别贴了
2022-01-29 18:40
成cc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2022-1-29
收藏
得分:0 
回复 2楼 rjsp
程序运行到函数体内,执行“tea[i].stu[i].sname = "aa"; ”此行代码就报错了把变量i换成常数0也是一样报错。
程序代码:
void set(struct teacher tea[],int len)
{
    
    for (int i = 0; i < len; i++)
    {
        //tea[i].stu[i].sname = "aa";    //运行此行代码会报错
        tea[i].stu[i].score = 100;        //可以正常写值

    }

}


2022-01-29 23:36
成cc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2022-1-29
收藏
得分:0 
回复 2楼 rjsp
错误信息如下:
0x0FEC373F (vcruntime140d.dll)处(位于 结构体.exe 中)引发的异常: 0xC0000005: 写入位置 0xCCCCCCCC 时发生访问冲突。 出现了
2022-01-30 00:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
你贴会出错的代码,不要再贴不出错的代码了,就像我在二楼贴的代码那样。

或者,你拷贝、粘贴、运行我在二楼贴的代码(不要改代码),看看运行有错没错。
如果没错,那说明你的代码没有任何问题,因为我二楼贴的代码就是在一楼的代码基础上,擦除无用行,并上你说会出错的那行 所形成的。
2022-01-30 08:59
成cc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2022-1-29
收藏
得分:0 
回复 5楼 rjsp
你好,2楼的程序我拷贝过去VS运行了但运行后还是会报同样的错误。我第二次发上来的代码就是运行错误的程序。因为我把    “tea[i].stu[i].sname = "aa";    //运行此行代码会报错”   这行程序注释了程序运行就没有报错了。


程序是运行到函数体内给sname赋值"aa"后才报错。
2022-01-30 12:23
成cc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2022-1-29
收藏
得分:0 
回复 5楼 rjsp
可能是运行环境的问题,新建一个新的项目,重新运行这段程序就可以了。
2022-01-30 15:23
快速回复:C++代码运行报错不知道哪里的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017871 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved