Глядя на ваш вывод, кажется, что вы ввели строку намного длиннее 19 символов. Итак, ваша программа имеет неопределенное поведение.
Это
scanf("%s",num);
- то, что вам никогда не следует делать. Не забудьте ограничить ввод размером вашего буфера. То есть:
char num[20]; // Size of buffer is 20
scanf("%19s",num);
^^
At max allow 19 characters so that there is also room for the string termination
Или, что лучше, используйте fgets
вместо scanf
. Одним из преимуществ fgets
является то, что он принимает размер буфера в качестве аргумента - следовательно, вы никогда не забываете его указать.
Также обратите внимание, что внешний for
l oop не нужен. Вы можете обновить массив напрямую, используя один l oop.
// for(i=0;i<10;i++){ Delete this - it's not needed
for(int j=0;j<strlen(num);j++)
{
if(isdigit(num[j]))
{
count[num[j]-'0']+=1; // Update array
}
}
BTW: вам нужно всего 10 элементов в счетчике, т.е.
int count[15]={0}; ---> int count[10]={0};