为什么每次都有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);
}
 

											
	    