为什么每次都有null pointer assignment出现在正确答案后面呢
我查的说这是没有给指针分配空间 可是也没有指针呀
真的很费解呀 呜呜
#include "stdio.h"
#include "string.h"
main()
{int i=0,j,n,s=0,y,c[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char a[100][20],b[11]="10X98765432",t='\n',d[100][20];
scanf("%d%c",&n,t);
do{
scanf("%s",a[i]);
if(strlen(a[i])==18)
{for(j=0;j<17;j++)
{s+=(a[i][j]-48)*c[j];
}
y=s%11;
if(b[y]==a[i][17])
printf("Valid\n");
else
printf("Invalid\n");
}
if(strlen(a[i])==15)
{if(a[i][12]==57&&a[i][13]==57)
{if(a[i][14]=='6'||a[i][14]=='7'||a[i][14]=='8'||a[i][14]=='9')
{for(j=0;j<6;j++)
{d[i][j]=a[i][j];
}
d[i][6]=49;d[i][7]=56;
for(j=6;j<15;j++)
{d[i][j+2]=a[i][j];
}
d[i][18]='\0';
for(j=0;j<17;j++)
{s+=(d[i][j]-48)*c[j];
}
y=s%11;
d[i][17]=b[y];
printf("%s",d[i]);
}
else
{for(j=0;j<6;j++)
{d[i][j]=a[i][j];
}
d[i][6]=49;d[i][7]=57;
for(j=6;j<15;j++)
{d[i][j+2]=a[i][j];
}
d[i][18]='\0';
for(j=0;j<17;j++)
{s+=(d[i][j]-48)*c[j];
}
y=s%11;
d[i][17]=b[y];
printf("%s",d[i]);
}
}
else
{for(j=0;j<6;j++)
{d[i][j]=a[i][j];
}
d[i][6]=49;d[i][7]=57;
for(j=6;j<15;j++)
{d[i][j+2]=a[i][j];
}
d[i][18]='\0';
for(j=0;j<17;j++)
{s+=(d[i][j]-48)*c[j];
}
y=s%11;
d[i][17]=b[y];
printf("%s",d[i]);
}
}
i++;
}while(i<n);
}