【大整数除以13】这个程序错在哪里?该怎么解决

【大整数除以13】这个程序错在哪里?
题目是用不大于400位的大整数除以13,输出商和余数。
但在下面的程序里如果被除数中有数位是0,程序就会终止,只输出0以前的结果,请问这是什么情况啊?如何修改?


#include<stdio.h>
#include<string.h>
int main()
{
int i,j,beichu,a[100];
char b[101];
scanf("%s",b);

for(i=0,beichu=0;i<strlen(b);i++)
{
    beichu=(beichu%13)*10+b[i];
    a[i]=beichu/13;
}
for(j=0;j<i;j++)
{
    if(a[j]==0)
        continue;
    else
        break;
}
for(;j<i;j++)
 {
     printf("%d",a[j]);
     if(j==i-1)
        printf("\n");
 }
 printf("%d",beichu%13);
 return 0;
}




------解决思路----------------------
为什么b[i]不-‘0’?
------解决思路----------------------
引用:
复制的时候出了点问题,是这样的:
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,beichu,a[100];
char b[101];
scanf("%s",b);
for(i=0;i<strlen(b);i++)
{
    b[i]=b[i]-'0';
}
for(i=0,beichu=0;i<strlen(b);i++)
{
    beichu=(beichu%13)*10+b[i];
    a[i]=beichu/13;
}
for(j=0;j<i;j++)
{
    if(a[j]==0)
        continue;
    else
        break;
}
for(;j<i;j++)
 {
     printf("%d",a[j]);
     if(j==i-1)
        printf("\n");
 }
 printf("%d",beichu%13);
 return 0;
}


不要char和int互用,很容易出问题的,直接这样不更好?
 beichu=(beichu%13)*10+b[i] - '0';

------解决思路----------------------
#include<stdio.h>
#include<string.h>
int main() {
int i,j,beichu,a[100];
char b[101];
int s;///////////////////////////
scanf("%s",b);
s = strlen(b);///////////////////
for(i=0;i<s;i++) {//////////////////
    b[i]=b[i]-'0';
    printf("%d\n", b[i]); 

for(i=0,beichu=0;i<s;i++) {/////////////////
    beichu=(beichu%13)*10+b[i];
    a[i]=beichu/13;
}
for(j=0;j<i;j++) {
    if(a[j]==0)
        continue;
    else
        break;
}
for(;j<i;j++) {
     printf("%d",a[j]);
 if(j==i-1)
             printf("\n");
 }
printf("%d",beichu%13);
     return 0;
}