Hola, ¿que te parece esta manera?
De esa forma el IF se hace mas corto, solo que se agrega una variable de cadena para compararla en cada iteracion con tu variable "cadena", si es igual a una de ellas retorna 1, sino retorna 0.
Código (cpp) [Seleccionar]
int direccionamientoIndexado(char *operando)
{
int i;
char *cadena = NULL,c[2];
char index[4][3] = { "X", "Y", "SP", "PC" };
cadena = (char *)calloc(2,sizeof(char));
for(i = 3;operando[i] != ']';i++)
{
sprintf(c,"%c",operando[i]);
strcat(cadena,c);
}
printf("%s",cadena);
for( i = 0; i < 4; i++ )
{
if( strcmp(cadena, index[i]) == 0 )
return 1;
}
return 0;
}
De esa forma el IF se hace mas corto, solo que se agrega una variable de cadena para compararla en cada iteracion con tu variable "cadena", si es igual a una de ellas retorna 1, sino retorna 0.