У меня возникли проблемы с печатью "char" из значения ASCII, хранящегося в массиве.
Общая цель - прочитать строку ввода от пользователя и сохранить ее в массиве. Затем используйте другой массив, чтобы подсчитать, сколько раз каждый символ появляется в строке, сохраняя количество вхождений в адресе массива, которое соответствует коду ASCII подсчитываемого символа. Затем вывести то количество совпадений, с которым был посчитан символ, и процент символов.
Я могу успешно создать массив вхождений символов. И в качестве теста я могу делать подсчет и процентный расчет во время подсчета явлений. Но позже, когда я пытаюсь создать цикл FOR с оператором IF, который игнорирует значения NULL и печатает адрес массива в качестве значения ASCII для символа, количество встречений символа и процентное содержание этого символа от общего числа символов. Я просто напечатал символ NULL. Ниже вы найдете то, что я написал до сих пор.
Это для помощи с школьным заданием, и я НЕ прошу решение в коде. Я пытался выяснить, где я ошибся, и я не уверен, почему один из моих циклов FOR работает, а второй нет. И был бы признателен за помощь в поиске, где я ошибся.
#include <stdio.h>
#include <stdlib.h>
#define TERMINAL -9
int main()
{
float totalCharacters;
float currentCharacterCount;
int iteration, currentInputCharacter;
char checkCharacter, input [80];
int alphabetArray[128] = {0};
totalCharacters = 0;
iteration = 0;
currentCharacterCount = 0;
currentInputCharacter = 0;
alphabetArray[128] = 0;
printf("Enter a line of test: ");
gets(input);
printf ("FREQUENCY TABLE\n");
printf ("---------------\n");
printf ("Char Count %% of Total\n");
printf ("---- ----- ----------\n");
totalCharacters = strlen(input);
printf (" ALL %5d %9.2f%%\n", strlen(input), (totalCharacters / strlen(input)) * 100);
for ( iteration = 0; input[iteration] != '\0'; iteration++)
{
checkCharacter = input[iteration];
alphabetArray[checkCharacter]++;
printf ("%4c %5d %9.2f%%\n", checkCharacter, alphabetArray[checkCharacter], ((float)alphabetArray[checkCharacter] / strlen(input)) * 100);
}
for ( iteration = 0; alphabetArray[iteration] != '\0'; iteration++)
{
printf ("%1c ", alphabetArray[iteration]);
if (alphabetArray[iteration] != '\0')
{
checkCharacter = alphabetArray[iteration];
printf ("%4c %5d %9.2f%%\n", checkCharacter, alphabetArray[checkCharacter], ((float)alphabetArray[checkCharacter] / strlen(input)) * 100);
}
}
system ("pause");
exit(0);
}