es vocal

C
bool esVocal(char c){
	char vocales[] = "AEIOUaeiou";
	bool esta = false;
	int i;
  
	i = 0;
	while(vocales[i] && esta == false){
		if(vocales[i] == c){
			esta = true;		
		}
    i++;
	}
	return esta;
}


//devuelve una nueva cadena con todas las vocales de la cadena inicial:
char* copiarVocales(char cadena[]){
  char *vocales;
  int i = 0;
  int vocal = 0;

  while(cadena[i] != '\0'){
    if(esVocal(cadena[i]) == true){
      vocal++;
    }
    i++;
  }

  vocales = (char *)malloc((vocal + 1) * sizeof(char));

  int contador = 0;
  i = 0;
  while(cadena[i] != '\0'){
    if(esVocal(cadena[i]) == true){
      vocales[contador] = cadena[i];
      contador++;
    }
    i++;
  }

  vocales[contador] = '\0'; //el \0 no entra al bucle, lo tengo que copiar yo.
  return vocales;
}
Source

Also in C: