torn24, non credo che quell'algoritmo sia corretto.
Supponi di avere come input semplicemente "X". Abbiamo NumRomano composto in questo modo: ['X', '\0']
La tua prima if è verificata (10 > 0), quindi entro... poi mi ritrovo a confrontare NumRomano[i+2] (che non si sa cosa sia, può valere qualunque cosa) con '\0'... direi di no.

Questo è più semplice (da destra verso sinistra):

codice:
int len = strlen(NumRomano);
Decimale = ConvertiCifra(NumRomano[len-1]);
for(int i=len-2; i>=0; i--) {
   if (ConvertiCifra(NumRomano[i]) >= ConvertiCifra(NumRomano[i+1])) {
      Decimale += ConvertiCifra(NumRomano[i]);
   } else {
      Decimale -= ConvertiCifra(NumRomano[i]);
   }
}
E questo è "equivalente", ma gira al contrario:

codice:
int len = strlen(NumRomano);
Decimale = ConvertiCifra(NumRomano[0]);
for(int i=1; i<len; i++) {
   if (ConvertiCifra(NumRomano[i]) <= ConvertiCifra(NumRomano[i-1])) {
      Decimale += ConvertiCifra(NumRomano[i]);
   } else {
      Decimale -= ConvertiCifra(NumRomano[i-1]);
      Decimale += (ConvertiCifra(NumRomano[i]) - ConvertiCifra(NumRomano[i-1]));
   }
}

Ciao.