vs异常,咋整啊咋整求

我就写一个案例练习,然后运行的时候跳了个异常,多出来一个xmemory文件,显示已引发异常,两种代码都异常

img

img

#include <iostream>
using namespace std;
struct student
{
    string name;
    int sor;
};
struct teacher
{
    string name1;
    student diao;
    student yong;
    student xue;
    student sheng;
    student wu;

};
void printx(struct teacher e)
{
    
    cout << "老师姓名" << e.name1 << "所带学生\n" << e.diao.name << "分数是" << e.diao.sor << "\t" << e.yong.name << "分数是" << e.yong.sor << "\t" << e.xue.name << "分数是" << e.xue.sor << "\t" << e.sheng.name << "分数是" << e.sheng.sor << "\t" << e.wu.name << "分数是" << e.wu.sor << endl;
    
}

int main() {

    string list[3] = { "小明","老t","mishishu"};
    teacher a ;
    list[0] = a.name1;
    a.diao.name = "连杰";
    a.diao.sor = 100;
    a.yong.name = "ff";
    a.yong.sor = 100;

    a.xue.sor = 200;
        a.xue.name = "gg";
        a.sheng.name = "fw";
        a.sheng.sor = 1;

        a.wu.name = "ww";
        a.wu.sor = 66;
    teacher b;
    list[1] = b.name1;
    
    b.diao.name = "大哈";
    b.diao.sor = 20;
    b.yong.name = "佳铭";
    b.yong.sor = 88;
    b.xue.name = "ss";
    b.xue.sor = 33;
    b.sheng.name = "ll";
    b.sheng.sor = 88;
    b.wu.name = "xx";
    b.wu.sor = 99;
    teacher c;
    list[2] = c.name1;
    c.diao.name =  "闲透";
    c.diao.sor = 111;
    c.yong.name = "wwe";
    c.yong.sor = 23;
    c.xue.name = "sfer";
    c.xue.sor = 29;
    c.sheng.name = "feww";
    c.sheng.sor = 44;
    c.wu.name = "ltt";
    c.wu.name = 99999999999999999;
    printx(a);
    printx(b);
    printx(c);



    system("pause");
    return 0;
}

  #include <iostream>
using namespace std;
struct student
{
    string name;
    int sor;
};
struct teacher
{
    string tname;
    struct student sarr[5];
};
void pluss(teacher y[], int len)
{
    string k = "abcdef";
    for (int i = 0; i < len; i++)
    {
        y[i].tname = "teacher_";
        y[i].tname += k[i];
        for (int j = 0; j < 5; j++)
        {
            y[i].sarr[j].name = "学生";
            y[i].sarr[j].name += k[j];
            y[i].sarr[j].sor = 60;
        }
      }


}
void printin(teacher y[], int len) 
{    
    for (int i = 0; i < len; i++)
    {
        cout << "老师姓名" << y[i].tname << endl;
        for (int j = 0; j < 5; j++)
        {
            cout << y[i].sarr[j].name << "分数" << y[i].sarr[j].sor << endl;
        }
    }

}


int main() {
    teacher tarr[3];
    pluss(tarr, 3);
    printin(tarr, 3);


    system("pause");
    return 0;
}

单步调试,看代码崩溃到哪行了,再查看一下崩溃时各变量的值
这个对于有时候还是有点奔溃的,还是得整个改掉,应该是越界了,把数组开大点,放在全局变量试试
记得采纳哦

应该是数组越界了,看着两个排查一下
https://blog.csdn.net/qq_51795098/article/details/124775347?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166057441916781647523096%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=166057441916781647523096&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-124775347-null-null.142^v40^control,185^v2^tag_show&utm_term=vs%E5%BC%95%E5%8F%91%E5%BC%82%E5%B8%B8%E8%AF%BB%E5%8F%96%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90%E5%86%B2%E7%AA%81&spm=1018.2226.3001.4449

https://blog.csdn.net/qq_40544338/article/details/105088603?ops_request_misc=&request_id=&biz_id=102&utm_term=vs%E5%BC%95%E5%8F%91%E5%BC%82%E5%B8%B8%E8%AF%BB%E5%8F%96%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90%E5%86%B2%E7%AA%81&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-105088603.142^v40^control,185^v2^tag_show&spm=1018.2226.3001.4449

请把所有的代码发出来看看,是不是代码问题。另外可以开机重启试试看

单步调试,看代码崩溃到哪行了,再查看一下崩溃时各变量的值

在哪里异常,加断点慢慢调试。

如果是下面的代码,那就没有异常:


  #include <iostream>
using namespace std;
struct student
{
    string name;
    int sor;
};
struct teacher
{
    string tname;
    struct student sarr[5];
};
void pluss(teacher y[], int len)
{
    string k = "abcdef";
    for (int i = 0; i < len; i++)
    {
        y[i].tname = "teacher_";
        y[i].tname += k[i];
        for (int j = 0; j < 5; j++)
        {
            y[i].sarr[j].name = "学生";
            y[i].sarr[j].name += k[j];
            y[i].sarr[j].sor = 60;
        }
      }
 
 
}
void printin(teacher y[], int len) 
{    
    for (int i = 0; i < len; i++)
    {
        cout << "老师姓名" << y[i].tname << endl;
        for (int j = 0; j < 5; j++)
        {
            cout << y[i].sarr[j].name << "分数" << y[i].sarr[j].sor << endl;
        }
    }
 
}
 
 
int main() {
    teacher tarr[3];
    pluss(tarr, 3);
    printin(tarr, 3);
 
 
    system("pause");
    return 0;
}

关掉那个弹出来的文件,然后保存一下剩下的文件。重新打开一下vs试试看。