Мой вопрос, как на самом деле сохранить
количество букв
Это довольно просто. Просто создайте массив из 26 целых чисел (по одному на каждую букву) и инициализируйте его нулем.
int letters[26] = { 0 }; // Initialize array to zero
Каждое значение в массиве соответствует количеству конкретной буквы. Индекс массива 0 относится к 'a', индекс массива 1 относится к 'b' и так далее. Затем каждый раз, когда вы встречаете букву, увеличивайте соответствующее значение в массиве. Вы можете использовать символ «a» (значение ASCII 97) в качестве начального смещения. Итак, с учетом переменной char letter;
вы бы сделали:
++letters[tolower(letter) - 'a'];
Но всегда убедитесь, что , прежде чем увеличивать соответствующее значение в массиве, вы проверяете isalpha(letter) && islower(letter)
, чтобы убедиться, что ваша буква находится в диапазоне строчных букв a-z; в противном случае вы получите доступ к индексу за пределами массива. Вы также можете проверить это состояние, сказав if (letter >= 'a' && letter <= 'z')
.