Код неправильно подсчитывает количество гласных

В чем ошибка?

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <locale.h>
#include <wchar.h>
void get_count(char* text)
{
    int count_a = 0;    // число А
    int count_gl = 0;    // число гласных
    const char* sonars = "eyuoia";
    int i, k;
    char s = 'a';
    for (i = 0; i < 100; i++)    // массив на 100 символов
    {
        if (text[i] == s)
            count_a++;
        for (k = 0; k < 18; k++)    // идем по массиву гласных и сравниваем
        {
            if (text[i] == sonars[k])
            {
                count_gl++;    // нашли гласную
                break;
            }
        }
    }
    printf("количество a: %d\n", count_a);
    printf("Количество гласных: %d\n", count_gl);
}

int main()
{
    setlocale(LC_ALL, "Russian");
    char text[100];
    while (1)
    {
        printf("Входная строка. q - выход\n");
        if (fgets(text, 100, stdin) != NULL)    // читаем по 100 символов
        {
            if (text[0] == 'q')
                return 0;
            get_count(text);    // вычисляем число гласных
        }
    }
}

Ответы (1 шт):

Автор решения: Harry

Как мелочь — у вас выход из программы, если строка начинается на q...

А теперь по отдельным строкам

void get_count(char* text)

    ...
    const char* sonars = "eyuoia";

Запомним, что гласных 6...

    for (i = 0; i < 100; i++)    // массив на 100 символов
    {

Это еще зачем? А если ввели строку из 5 букв?

        for (k = 0; k < 18; k++)    // идем по массиву гласных и сравниваем
        {
            if (text[i] == sonars[k])
            {

Ой. Мы же уже выяснили, что гласных всего 6. Откуда 18?!! Да и, кстати, буквы в верхнем регистре гласными не считаются?...

Я бы делал как-то так:

void get_count(char* text)
{
    int count_a  = 0;    // число А
    int count_gl = 0;    // число гласных
    const char* sonars = "eyuoia";
    const char s = 'a';
    for(; *text;++text)
    {
        if (*text == s) count_a++;
        if(strchr(sonars,tolower(*text))) count_gl++;
    }
    printf("количество a: %d\n", count_a);
    printf("Количество гласных: %d\n", count_gl);
}
→ Ссылка