I am implementing program to count frequency of digits in alphanumeric string, but after spending hours with weird output I am able to find solution that C is setting garbage value to all index values. But surprise for me is that compiler setting some values to zero(in my example it is setting 0
for 0 to 7
index, and some random garbage value at 8th
and 9th
position). Still, after searching around so much and discussion with colleague, I am not find any solution.
Here I am posting my code and output.
#include <assert.h>
#include <limits.h>
#include <math.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX_LENGTH 1000
int main()
{
int ar[10];
char s[MAX_LENGTH];
scanf("%s",s);
for(int i = 0; i < strlen(s); i++){
int index = s[i] - 48;
if(index >= 0 && index <= 9){
ar[index] = ar[index] + 1;
}
}
for(int i = 0; i <= 9; i++){
printf("%d \n", ar[i]);
}
}
Input : as12556fsd889ad9
From debugger I am getting this snap shot : debugger snap shot
Output :
0
1
1
0
0
2
1
0
1606415986
32769
Why compiler setting garbage value 0
from index 0 to 7
and 1606415986
at index 8
and 32769
at index 9
.
Any help or link which give me deep understanding for this would be appreciated.
I am beginner and student so please do not down vote my question. Thanks