grazie per la risposta e mi scuso se ho violato il regolamento
cmq il mio codice è questo
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//prototipi di funzione
void scambio(char* string,int i,int j);
void permutazioni(char *string,int i ,int n);


main()
{

char s[256];
printf("Inserire la stringa: ");
scanf("%s",s);
permutazioni(s,0,(int)strlen(s)-1);
printf("\n\n\n");
system("pause");
}


//Genera ricorsivamente le permutazioni
void permutazioni(char *string,int i ,int n)
{
//se si vuole salvare su file
//FILE *fp;
int j;
//fp=fopen("pass.txt", "a");
//if(fp==NULL)
//printf("file non trovato...");

if(i==n)
{
printf("%s\n", string);
//fprintf(fp, "%s\n", string);
}

else
{
for( j = i ; j<=n ; j++ )
{
scambio(string,i,j);
permutazioni(string,i+1,n);
scambio(string,i,j);
}
}
//fclose(fp);
}

//Effettua un semplice scambio di posizione
void scambio(char* string,int i,int j)
{
int temp;
temp = string[i];
string[i] = string[j];
string[j] = temp;
}

che però calcola solo le permutazioni non le combinazioni ... per le combinazioni non mi viene niente in mente... e non so come fare neanche per fargli combinare gli elementi N ad N
posso risolvere creando un altro vettore di lunghezza N ?
boh non so proprio ...