scanf("%i", &ilosc_linijek); <-- nie wczytuje znaku końca tej linii.
Możesz to poprawić w poniższy sposób:
scanf("%i\n", &ilosc_linijek);
i wtedy nie musisz już powiększać [sztucznie?] pętli.
Błąd powodowany jest za małą tablicą [o jeden znak]
Trzeba znać tablicę kodów ascii ale nie aż tak dokładnie. 
zamiast:
int tablica[122]; // + co najmniej 1, a najlepiej od razu 255
.......
for(int i=0;i<123;i++)
tablica[i] = 0;
można [lepiej?]
int tab ['z' + 1] = {0}; // = {0} zastępuje twoją pętlę zerującą
zamiast:
while((znak = getchar()) != 10)
bezpieczniej
while((znak = getchar()) >= ' ')
bo uwzględnia znak eof w ostatniej linii, bez entera
zamiast:
for(char i=97; i<123; i++){
dużo czytelniej:
for (char i = 'a'; i <= 'z'; i++){
czy też
for (int i = 'a'; i <= 'z'; i++){
itd