Te estas compilcando mucho la vida , mira es una combinacion con repeticion , primero plantea el problema y luego intenta resolverlo, creo que este algoritmo te servira.
Lo he hecho para que resuelva las combinaciones de letras que me pusiste en el ejemplo osea a,b,c.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char caracteres[3] = {'a', 'b', 'c'};
// FILE *file;
//file = fopen("d.txt", "w");
for(int i=0;i<3;i++)
{
printf("%c\n", caracteres
[i
]); for(int j=0;j<3;j++)
{
printf("%c\n", caracteres
[i
]); }
}
//fclose(file);
return 0;
}