Combinations using Recursion with Numbers

/*
Just enter a string, say "abcd" and it will print all possible combinations, i.e.,

abcd abdc acbd acdb adbc adcb
bacd badc bcad bcda bdac bdca
cabd cadb cbad cbda cdab cdba
dabc dacb dbac dbca dcab dcba
*/
# include <stdio.h>
# include <string.h>

int length, *loopvar;
char string[100];

void combination(int varcount)
{
  int i, j, k;
  if (varcount == length) {
    for (i = 0; i < length; i++) putchar(string[loopvar[i]]);
    putchar('\t');
  }
  else for (i = 0; i < length; i++) {
    loopvar[varcount] = i;
    for (j = 0; j < varcount; j++)
      for (k = j + 1; k <= varcount; k++)
         if (loopvar[j] == loopvar[k])
           goto end;
    combination(varcount + 1);
    end: ;
  }
}

void main()
{
  printf("Enter the string: ");
  scanf("%s", string);
  loopvar = new int[length = strlen(string)];
  combination(0);
  delete loopvar;
}