Я создаю счетчик частоты писем в C, который отслеживает, сколько раз символ используется в заданной строке. А 2d массив отслеживает данные, а программа перебирает каждый символ:Ошибка выполнения значения 2D-значения массива
char* input = "The cat jumped over the fence";
int inputlength = (int) strlen(input);
//keeps track of how many times each character is used
int letterfrequencies[26][2] = {
{'a',0},
{'b',0},
{'c',0},
{'d',0},
{'e',0},
{'f',0},
{'g',0},
{'h',0},
{'i',0},
{'j',0},
{'k',0},
{'l',0},
{'m',0},
{'n',0},
{'o',0},
{'p',0},
{'q',0},
{'r',0},
{'s',0},
{'t',0},
{'u',0},
{'v',0},
{'w',0},
{'x',0},
{'y',0},
{'z',0}
};
int currentchar=0;
int letternum=0; //character position in char counting array
for (int i=0; i<inputlength; i++) {
currentchar=input[i];
letternum=0;
while (currentchar!=letterfrequencies[letternum][0]) {
letternum++;
}
printf(" Found a character ");
letterfrequencies[letternum][1]++; //Add to char counting array
printf("\n");
}
На первой итерации цикла (я использую Xcode отладчик с точками разрыва), все работает, как ожидалось. Однако, после первой итерации, линия:
letterfrequencies[letternum][1]++;
сбой программы, говоря Thread 1: EXC_BAD_ACCESS (код = 2, адрес = 0x7fff5fc2e84c). Если я прокомментирую строку, все пройдет без проблем. Что может быть причиной этого?
Подумайте, что произойдет, когда 'currentchar' - это пространство. Ваш код вызывает неопределенное поведение. Вы должны предпринять некоторые действия, если 'currentchar' не найден в' letterfrequencies' –
Введен только a-z? – BLUEPIXY
@Cool Guy, который исправляет его. – TheInnerParty