После реализации программы часть вывода на экран заполняется ненужными символами

Здраствуйте, мне дано задание по переводу чисел от 1 до 999 в римские цифры! Решение я осуществлял через методы для перевода единиц, десятков и сотен. Знаю, что это не самое лучшее решение. Так вот, при реализации кода перед вторым выводом полученного числа появляются случайные символы и я не могу понять почему! Помогите пожалуйста! Мой код:

#include <stdio.h>
#include <conio.h>
void hundreds(int a,char b[60]){

      if (a == 1){
       printf("C");
       strcat(b,"C");
            }
      if (a == 2){
       printf("CC");
       strcat(b,"CC");
            }
      if (a == 3){
       printf("CCC");
       strcat(b,"CCC");
            }
      if (a == 4){
        printf("CCCC");
        strcat(b,"CCCC");
            }
      if (a == 5){
        printf("D");
        strcat(b,"D");
            }
      if (a == 6){
         printf("DC");
         strcat(b,"DC");
            }
      if (a == 7){
         printf("DCC");
         strcat(b,"DCC");
            }
      if (a == 8){
          printf("DCCC");
          strcat(b,"DCCC");
            }
      if (a == 9){
          printf("CM");
          strcat(b,"CM");
            }
}

void dozens(int a,char b[]){
    if (a == 1){
        printf("X");
        strcat(b,"X");
                }
    if (a == 2){
        printf("XX");
        strcat(b,"XX");
                }
    if (a == 3){
        printf("XXX");
        strcat(b,"XXX");
                }
    if (a == 4){
        printf("XXXX");
        strcat(b,"XXXX");
                }
     if (a == 5){
        printf("L");
        strcat(b,"L");
                }
     if (a == 6){
        printf("LX");
        strcat(b,"LX");
                }
     if (a == 7){
         printf("LXX");
         strcat(b,"LXX");
                }
     if (a == 8){
         printf("LXXX");
         strcat(b,"LXXX");
                }
     if (a == 9){
         printf("XC");
         strcat(b,"XC");

                }}

void units(int a, char b[]){
   if (a == 1){
        printf("I");
        strcat(b,"I");
    }
   if (a == 2){
        printf("II");
        strcat(b,"II");
    }
    if (a == 3){
        printf("III");
        strcat(b,"III");
    }
    if (a == 4){
        printf("IV");
        strcat(b,"IV");
    }
    if (a == 5){
        printf("V");
        strcat(b,"V");
    }
    if (a == 6){
        printf("VI");
        strcat(b,"VI");
    }
    if (a == 7){
         printf("VII");
         strcat(b,"VII");
    }
    if (a == 8){
         printf("VIII");
         strcat(b,"VIII");
    }
    if (a == 9){
         printf("IX");
         strcat(b,"IX");
    }
}
void main()
{
    char result[100];
    int a[4];
    int i;
    int num;
    printf("Enter your number from 1 to 999\n");
    scanf("%d",&num);
            while(num < 1 || num > 999){
                printf("ERROR\n");
                scanf("%d",&num);
            }

        for (int i = 0; num; num/=10){
                a[i++] = num%10;
        }

    for (i = 2; i < 3; i++) {
            hundreds(a[i],result);
    }

    for (i = 1; i < 2; i++) {
            dozens(a[i],result);
            }

    for (i = 0; i <1; i++) {
            units(a[i],result);
    }
    printf("\n");
    puts(result);
}

Ответы (1 шт):

Автор решения: Harry

Инициализируйте массив

char result[100] = {0};

Ну, и хотя бы не объявляйте main() как void. Хотя проблема и не в этом...

→ Ссылка