计算c语言条形码校验位

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>
int getEAN(char *ean){
            int i,sum1=0,sum2=0,m,n;
                        for(i=0;i<12;i++){
                            n=i;
                        if(n%2!=0){
                        sum1+=ean[n];
                                                                                                                                                                                           }
                        else                                                          
                            sum2+=ean[n];
        }
                    int b;
                b=sum1*3+sum2;
                 int c=b%10;
                int x=(10-c)%10;
                                                                                                                                                                                        return x;
}
int main(){
        char a[12];
                int i;
    for(i=0;i<12;i++){
            scanf("%s",&a[i]);
         }
         printf("%d",getEAN(a));
            return 0;
}



运行结果及报错内容

死循环

我的解答思路和尝试过的方法
我想要达到的结果

代码修改如下

#include <stdio.h>
#include <stdlib.h>
int getEAN(char *ean)
{
    int i,sum1=0,sum2=0,m,n;
    for(i=0; i<12; i++)
    {
        n=i;
        if(n%2!=0)
        {
            sum1+=ean[n];
        }
        else
            sum2+=ean[n];
    }
    int b;
    b=sum1*3+sum2;
    int c=b%10;
    int x=(10-c)%10;
    return x;
}
int main()
{
    char a[12];
    int j;
    for(j=0; j<12; j++) 
    {
        a[j]=getchar();
    }
    printf("%d",getEAN(a));
    return 0;
}