Tiene un par de errores, te lo pongo corregido:
#include <stdio.h>
#include <stdlib.h>
#define TAM 10
int main () {
char alfRomano[] = {'I','V','X','L','C','D','M','\0'}, entrada[TAM], *pAlfRomano, *pEntrada;
bool encontrado;
printf("Introduce un numero: ");
fgets(entrada, TAM, stdin);
for(pEntrada = entrada; *pEntrada != '\n'; pEntrada++) { //Bucle exterior: recorre la entrada letra por letra
encontrado = false;
for(pAlfRomano = alfRomano; ((*pAlfRomano != '\0') && !encontrado); pAlfRomano++) { //Bucle interior: comprueba si el siguiente carácter es romano
if(*pEntrada == *pAlfRomano) encontrado = true;
}
if(!encontrado) {
printf("No es un numero romano.\n");
exit(1);
}
}
printf("Es un numero romano.\n");
return 0;
}
Casos especiales:
-Si introduces la cadena vacía te la da por correcta y eso no es un número romano.
-Si introduces un número romano correcto y al final un espacio te la da por incorrecta cuando si es válida.
Esto es muy sencillo de manejar pero ya corre por tu cuenta.
Además puedes mejorar el código y añadirle reglas de la sintáxis romana como por ejemplo que no se puedan escribir más de tres carácteres iguales consecutivos: VIIII -> mal
Saludos.