Não sei se venho tarde mas... Fiz isto assim em cima do joelho... Espero que ajude.
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
unsigned char counter[5] = {0,0,0,0,0};
void is_vogal (char *vogal) {
unsigned int i;
for (i=0;i<=strlen(vogal);i++) { // percorre a string toda
switch (tolower(vogal[i])) { // coloca todas as vogais como minusculas
case 'a' : counter[0] += 1; break; // caso seja 'a' , incrementa um valor na posição 0 do vector.
case 'e' : counter[1] += 1; break; // caso seja 'e' , incrementa um valor na posição 1 do vector.
case 'i' : counter[2] += 1; break; // caso seja 'i' , incrementa um valor na posição 2 do vector.
case 'o' : counter[3] += 1; break; // caso seja 'o' , incrementa um valor na posição 3 do vector.
case 'u' : counter[4] += 1; break; // caso seja 'u' , incrementa um valor na posição 4 do vector.
default : continue;
}
}
}
int main (int argc, char **argv) {
if (argc!=2) { printf ("Sintaxe:\n\n%s <string>",argv[0]); exit(0); } // a aplicação tem que ser chamada com 1 argumento
is_vogal(argv[1]); // "sobe" para a função "is_vogal" levando como argumento a string colocada quando se chamou o programa
printf ("a = %d\ne = %d\ni = %d\no = %d\nu = %d\n\n", counter[0], counter[1], counter[2], counter[3], counter[4]);
return 0;
}
Exemplo:
[tiago@startrek linguagem_c]$ ./is_vogal Hello World
Sintaxe:
./is_vogal <string>
[tiago@startrek linguagem_c]$ ./is_vogal "Hello World"
a = 0
e = 1
i = 0
o = 2
u = 0
Abraço