c语言画线的部分不太理解

img

img


画线的地方不太懂,那个char class[20]是班级名称吗?那个data[20]是成绩吗?但是为啥是char型的呢?那个a[i].class[0]=0,这是初始化,但是我觉得应该是a[i].class[20]=0呀,里面为啥是0呢,不理解,还有下面框起来的那个应该是统计不同班级学生的的总分的,没看懂,那个num不是初始化为0吗?有点晕。大家可以帮忙看下吗?有些急,谢谢大家了

class[20]是班级名称,data[20]不是成绩,可能是学号子类的东西,虽然在文件存储,但是本代码块不需要,所以只是读取时使用了一下,后续代码没有用它
a[i].class[0]=0是将字符串第一个字符就设置为字符串结束符。不能用a[i].class[20]=0,这表示将第21个字符设置为结束符,越界访问了。0是字符串结束标志
num代表a数组元素数量,一开始确实为0,这时候相当于直接把文件读入的信息记录到a数组,如果读到同一个班级名称,那么累加成绩,否则将新班级及第一个人的成绩加入a数组。a[num++]会使得num增加的