n进制数转换为十进制数

这段代码哪里错了,输出老是错误
求指导
A-F分别对应10-15
#include
#include
int main()
{
int len, n, k = 0, c = 0;
scanf("%d %d", &len, &n);//len为数组长度, n即n进制
getchar();
char a[len];
scanf("%s",a);
for(int i=0;i<=len-1;i++)
{
if (a[i]-'0' >= 65) //将A-F转换为10-15
a[i]=a[i]-55;
}
for (int i = 0; i<=len-1; i++)
{
if (a[i]-'0' >= n)
{
printf("Error"); //判断输入的数组是否合法
return 0;
}

}
for(int i=0;i<=len-1;i++)
{
    if (a[i] - '0' < n)
    {
        k = (a[i] - '0') * pow(n,i );
        c = k + c;
    }
    printf("%d",c);//输出十进制结果
}
return 0;

}

#include<stdio.h>
#include<math.h>
int main()
{
    int len, n, k = 0, c = 0;
    scanf("%d %d", &len, &n);//len为数组长度, n即n进制
    getchar();
    char a[len];
    scanf("%s",a);
    for(int i=0;i<=len-1;i++)
    {
        if (a[i]-'0' >= 65) //将A-F转换为10-15
            a[i]=a[i]-55;
    }
    for (int i = 0; i<=len-1; i++)
    {
        if (a[i] - '0' >= n)
        {
            printf("Error"); //判断输入的数组是否合法
            return 0;
        }
    }
    
    for(int i=0;i<=len-1;i++)
    {
        if (a[i] - '0' < n)
        {
            k = (a[i] - '0') * pow(n,len - i - 1);
            c = k + c;
        }
    }
    printf("%d",c);//输出十进制结果
    return 0;
}