字符串的全排问题(递归函数)

求助 我想解决字符串的全排问题
然后我用的是老虎机的方法 用一个数组来表示输出顺序
方法用的是函数的递归
编译通过了但是运行会无限循环还是溢出

以下是代码

#include <stdio.h>

#define SIZE 100

//prototype
void Process(int k,int n,char string[SIZE],int num[SIZE]);

int main(void)
{
    int num[SIZE];

    for(int i = 0;i < SIZE;i++)
    {
        num[i] = -1;
    } //initialize excluding array

    printf("Please enter a string :\t");
    char string[SIZE];
    scanf("%99s",string); //scan string  The SIZE should be changed handly

    int n = 0;
    for(int i = 0;i < SIZE;i++)
    {
        if(string[i] == '\0');
        {
            n = i;
        }
    } //find out the number of the elements of the string

    Process(0,n,string,num);
}

void Process(int k,int n,char string[SIZE],int num[SIZE])
{
    int judge = 0;

    if(k == n)
    {
        int counter = 0;
        for(int i =0;i < n;i++)
        {
            counter = num[i];
            printf("%c",string[counter]);
        }
        puts("");
    }
    else
    {
        for(int i = 0;i < n;i++)
        {
            for(int i1 = 0;i1 < SIZE;i1++)
            {
                if(num[i1] == i)
                {
                    judge = 1;
                    break;
                }
            }

            if(judge == 1)
            {
                judge = 0;
                continue;
            }
            else if(judge == 0)
            {
                num[k] = i;
                Process(k+1,n,string,num);

                num[k] = -1;
            }
        }
    }
}