Un programa que muestre por pantalla todas las vocales anteriores a cada carácter de una cadena

necesito escribir un programa que solicite por teclado una cadena de caracteres y a continuación, para cada carácter de la cadena, que el programa muestre por pantalla todas las vocales anteriores a dicho carácter.

Un ejemplo: Escribe una cadena de caracteres: Hola_mundo las vocales anteriores al caracter H son: las vocales anteriores al caracter o son: las vocales anteriores al caracter l son: o las vocales anteriores al caracter a son: o las vocales anteriores al caracter _ son: o a las vocales anteriores al caracter m son: o a las vocales anteriores al caracter u son: o a las vocales anteriores al caracter n son: o a u las vocales anteriores al caracter d son: o a u las vocales anteriores al caracter o son: o a u 

Lo que llevo hecho hasta el momento es esto:

#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 128  int main(int argc, char *argv[]) {  char cadena[MAX]; int i=0, j=0, cont=0;   printf("Ingrese una cadena: "); scanf("%s", cadena);  for (j=0;j<strlen(cadena);j++){     printf("las vocales anteriores al caracter %c son: ", cadena[j]);     for(i=0;i<strlen(cadena);i++){         if((cadena[i] == 'a' || cadena[i] == 'e' || cadena[i] == 'i' ||     cadena[i] == 'o' || cadena[i] == 'u')){         printf("%c", cadena[i]); //imprimo las vocales.         }     }     printf("\n"); } return 0; } 

Pero esto me imprime todas las vocales que encuantra en la cadena, he intentado insertando un bucle pero no logro hacer que imprima solo las vocales anteriores a cada caracter de la cadena. A ver si alguien me puede decir como resolver el problema, gracias.