结构体数组问题 已有大概思路 但不知如何处理弹出的警告

问题遇到的现象和发生背景

本题是定义2个包含30个元素、相同结构的结构体数组,包含姓名、性别、出生日期、年龄、成绩等成员。

编写main()函数实现如下功能:

(1)对第1个数组赋初值,成员“年龄”通过2022-出生年份计算得到;

(2)将第1个数组按成绩高低倒序排列后存放到第2个数组中;

(3)使用printf()函数输出第2个数组的成员信息。

已具有大概思路 但如下警告应如何改正 求各位教教

用代码块功能插入代码,请勿粘贴截图
 printf_s("请输入30位学生的姓名,性别,出生年,出生月,出生日,成绩");
        scanf_s("%s %s %d %d %d %d", &stua[i].name,&stua[i].gender, &birtha[i].year, &birtha[i].month, &birtha[i].day, &stua[i].score);
        for (j = 0; j < 2; j++)
        {
            stua[j].age = 2022 - birtha[j].year;
        }
        for (s = 0; s < 2; s++)
        {
            if (stua[s].score << stua[s + 1].score)
            {
                int temp = stua[s].score;
                stua[s].score = stua[s + 1].score;
                stua[s + 1].score = temp;
            }
        }
        for (n = 0; n < 2; n++)
        {
            if (stua[n].score << stua[n + 1].score)
            {
                int temp = stua[n].name;
                stua[n].name = stua[n + 1].name;
                stua[n + 1].name = temp;
            }
        } for (a = 0; a < 2; a++)
        {
            if (stua[a].score << stua[a + 1].score)
            {
                int temp = stua[a].age;
                stua[a].age = stua[a+ 1].age;
                stua[a + 1].age = temp;
            }
        }
        for (y= 0; i < 2; i++)
        {
            if (stua[y].score << stua[y + 1].score)
            {
                int temp = birtha[y].year;
                birtha[y].year = birtha[y + 1].year;
                birtha[y + 1].year = temp;
            }
        }
        for (d = 0; d < 2; d++)
        {
            if (stua[d].score << stua[d + 1].score)
            {
                int temp = birtha[d].day;
                birtha[d].day = birtha[d + 1].day;
                birtha[d + 1].day = temp;
            }
        }
        for (m = 0; m <2; m++)
        {
            if (stua[m].score << stua[m + 1].score)
            {
                int temp = birtha[m].month;
                birtha[m].month = birtha[m+ 1].month;
                birtha[m + 1].month = temp;
            }
        }
        printf("排序后:\n");
        for (int i = 0; i < 30; i++)
        {
            printf("姓名:%s\t性别:%s\t出生年%d\t 出生月%d\t 出生日%d\t 岁数: % d\t分数: % d\n", stua[i].name, stua[i].gender, birtha[i].year, birtha[i].month, birtha[i].day, stua[i].age, stua[i].score);

        }
        printf("\n");
        return 0;
    }
}


运行结果及报错内容

img

img

img


结果如图:无法输出排序后数组

img

scanf_s("%s %s %d %d %d %d", &stua[i].name,&stua[i].gender, &birtha[i].year,
scanf_s输入字符串时,必须指定字符串的最大长度,比如

scanf_s("%s %s %d %d %d %d", &stua[i].name,20,&stua[i].gender, 20,&birtha[i].year,
20只是举例,实际看你定义的数组大小

if (stua[s].score << stua[s + 1].score) 这是啥啊?怎么是<<呢?这是左移操作啊,一个<就行啊!