0. Робіть відступи і використовуйте else. Ваш код виглядає так, ніби n_a++, n_e++ і т.д. виконуються обов'язково, незалежно від попередніх if; і всі перевірки теж будуть здійснені, хоча якщо перша умова виконується, подальші перевірки не потрібні.
1. Можете використовувати switch-case, воно тут трохи краще виглядає за if-else (хоча все одно не дуже).
2. А взагалі, оскільки можливих значень символів усього 256, а char в C - таке саме число, як і int, можете зробити масив
int n[256] = {0}; //якщо це заскладно, зануліть у циклі
int len = strlen(str); //strlen обчислює довжину стрічки і містить цикл для цього; не викликайте його в циклі
for(l=0;l<len;++l)
n[(unsigned char)str[l]]++; //підраховуємо всі символи
printf("a = %d i=%d e=%d y=%d o=%d u=%d",n['a'],n['i'],n['e'],n['y'],n['o'],n['u']);