高精度乘法请问哪里出了问题

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void f(char x[],int l)
{
    int s,p;
    for(s=0;s<l;s++)
    {
        x[s]=x[s]-48;
    }
    for(s=0;s<l/2;s++)
    {
        p=x[p];
        x[s]=x[l-1-s];
        x[l-1-s]=p;
    }
}
int main()
{
    char a[1001]={0},b[1001]={0},c[1001][1002]={0},h[2002]={0};
    int len1,len2,len,i,t,k;
    void f(char x[],int l);
    scanf("%s",a);
    scanf("%s",b);
    len1=strlen(a);
    len2=strlen(b);
    f(a,len1);
    f(b,len2);
    for(i=0;i<len1;i++)
    {
        for(t=0;t<len2;t++)
        {
            c[i][t]=a[i]*b[t];
            if(t!=0)c[i][t]+=a[i]*b[t-1]/10;
            if(t!=len2-1)c[i][t]=c[i][t]%10;
        }
    }
    for(t=0;t<len1+len2-1;t++)
    {
        k=0;
        for(i=0;i<len1;i++)
        {
            if(t-k>len2-1)continue;
            if(t-k<0)break;
            h[t]+=c[i][t-k];
            k++;
        }
        if(t!=0)h[t]=(h[t-1]-48)/10+h[t]+48;
        if(t==0)h[0]+=48;
    }
    len=strlen(h);
    if(h[len-1]-48>9)
    {
        h[len]=(h[len-1]-48)/10+48;
        len++;
    }
    for(i=0;i<len;i++)
    {
        h[i]=(h[i]-48)%10+48;
    }
    for(i=len-1;i>=0;i--)
    {
        printf("%c",h[i]);
    }
    return 0;
}