#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int char_freq[26] = {0};
int i = 'a';
int plain_char = getchar();
while(plain_char != EOF)
{
char_freq[plain_char-'a']++;
plain_char = getchar();
}
while(i <='z')
{
printf("%c %d \n",i,char_freq[i-'a']);
i++;
}
return EXIT_SUCCESS;
}
В приведенной выше программе я пытаюсь создать частотную таблицу и играть со значениями ASCII. Проблема в том, что я не проверяю, что значение 0SCASCII находится в диапазоне букв в нижнем регистре, и если я ввожу слово A
в plain_char
, тогда 65-97 = -32
индекс массива и я его увеличиваю, не должен ли я получить ошибку сегментации? Но программа работает все еще хорошо?Ошибка сегментации
Как я могу узнать, сколько памяти выделено моей программе? – user2688772
@ user2688772 вам все равно. вам нужно только заботиться о явной выделенной памяти. (также мы должны сказать, что процесс вместо программы) –