[C con Clase] Covertir String en Constante

Salvador Pozo salvador en conclase.net
Jue Sep 24 16:48:06 CEST 2009


El pasado 2009-09-24 12:16:44, Abel escribió:
 
A> Hola,
A> trataré de explicar el problema que tengo; escribí lo siguiente:
A> #define MAX_A  "[0001]"
A> #define MIN_B  "[0002]"
A> main()
A> {
A>  test("A");
A> }
A> void test(char *str)
A> {
A>  sprintf(temp,"MAX_%s",str);
A>  CAN(temp);  //aqui esta mi problema. necesito enviar a temp como "[0001]" y no 
A>                como "MAX_A"
A> }
A> es un ejemplo simplificado de mi problema. Existe la forma de solucionar esto?
A> Agradezco por toda información.


Hola:

Desde luego, con macros no vas a poder hacerlo, por la sencilla razón de que las macros son expandidas ANTES de la compilación, y tu intentas usarlas durante la ejecución.

No sé hasta qué punto este ejemplo es una simplificación, pero se me ocurre que podrías usar un array:

char *tabla[] = {
   "[0001]",
   "[0002]"
};

main()
{
 test("A");
}
void test(char *str)
{
 CAN(tabla[str[0]-'A']);
}

También podrías crear un array asociativo (o un mapa), en el que los índices sean cadenas del tipo que mencionas: MAX_A, MAX_B, etc.

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase