C语言10进制进行任意进制的转换

小白一枚,自己写的代码却没有运行下去,直接输出十进制的结果,没有进行转换
 

#include<stdio.h>
#include<math.h>
int fun1(int n, int c)
{
    if (c < n)
        return c;
    int i;
    for (i = 1;; i++)
    {
        int a;
        a = pow(n, i);
        if (a > c)
            break;
    }
    c = c - pow(n, i - 1);
    return pow(n, i - 1) + fun1(n, c);
}
int main()
{
    int a, b, n;
    int c;
    scanf_s("%d%d", &a, &b);
    c = a + b;
    scanf_s("%d", &n);
    printf("%d", fun1(n, c));
    return 0;
}

 

会不会进入死循环了,你在fun1里面又调了fun1,堆栈没有处理好吧