是否可通过一个数组的数据输入情况来给另外一个数组赋值

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

img

用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
int main()
{
    char a[3][3];
    int i,j,b[3][3],sum[8],flag;
    for(i=0;i<3;i++)//根据a[3][3]中每个数据来确定b[3][3]中对应的数据
        for(j=0;j<3;j++) {scanf("%c",&a[i][j]);
                         if(a[i][j]=='X') {b[i][j]=1;continue;}
                         else if(a[i][j]=='O') {b[i][j]=-1;continue;}
                         else if(a[i][j]=='.') {b[i][j]=0;continue;}}

for(i = 0;i < 3;i++) //这个for循环是求出各行之和并依次存入sum数组中
{for(j = 0;j < 3;j++)   sum[i] += a[i][j];}
    
for(i = 0;i < 3;i++) //这个for循环是求出各列之和
{for(j = 0;j < 3;j++)  sum[i+3] +=a[j][i]; }
    
for(i = 0;i < 3;i++) sum[2*3] += a[i][i];//求正对角线

for(i = 0;i < 3;i++) sum[7] += a[i][2-i];//求辅对角线
    
        for(i=0;i<8;i++)
    {if(sum[i]==3) {flag=1;break;}//通过每条直线上和的大小来确定排列情况
    else if(sum[i]==-3) {flag=-1;break;}
    else flag=0;}
    if(flag==1) printf("X win!");//通过判断flag的值来输出最终结果
    else if(flag==-1) printf("O win!");
    else printf("No one win!");
    return 0;
}


运行结果及报错内容

img

我的解答思路和尝试过的方法

我认为出错应该是在b[3][3]的赋值上,但不知道为啥错了,求解答

sum[i] += a[i][j];
sum数组你没有初始化为0啊