Если посмотрите таблицу ascii символов (www.asciitable.com/), то Вы увидите, что символы цифр (начиная с '0' и до '9') идут подряд начиная с 0. Соответственно, введеному символу '0' с клавиатуры соответствует значение 48, символу '1' - 49, и так до символа '9' - 57. Поэтому для того, чтобы получить вхождения символа '0', вам нужно сравнивать введеный символ (string[j]) не с нулем, а с символом '0' (значение 48). Можно было бы написать
'string[j] == i + 48', но мне привычнее видеть код так, как я указал в ответе (дело привычки/вкусов).
'string[j] == i + 48', но мне привычнее видеть код так, как я указал в ответе (дело привычки/вкусов).