nummas[i] = a[i];
тут ты в буфер nummas складываешь найденную цифру не с начала строки, а с позиции i которая для нее уже в середине, а так как изначальна строка нулями заполняется, atoi думает что строка пустая и возворащает 0
ты должен завести еще переменную для номера символа в nummas и не забудь перез atoi добавить в еще символ с кодом 0 чтобы затереть предыдущее значение (иначе если сначала найдешь длинное число а потом короткое, при выводе котороткое смешается с длинным)
настоятельно рекомендую отлаживать свою программу, по шагам проходить весь алгоритм и проверять что должно быть в каждой переменной и что туда складывает твоя программа, все ошибки сразу станут видны