¿Esto se puede en C?

Iniciado por NeoB, 27 Julio 2012, 10:18 AM

0 Miembros y 1 Visitante están viendo este tema.

NeoB

Buenas. Me pregunto si en C hay alguna forma de asignar a una variable el valor de otra como nombre, por ejemplo, si tengo una cadena (introducida por el usuario o no) que contiene "var1", puedo crear una variable que se llame var1; o si se puede acceder a una variable llamada var2, a través de una cadena como "var2".
-> He buscado en google pero...
-> Gracias.

avesudra

Es un poco complicado pero no imposible , lo que sí es que no puedes declarar variables en mitad de la ejecución con un identificador que no estuviese en el código, es decir yo no puedo hacer que el programa me pida un nombre y asignar ese nombre a un identificador de variable , pero si puedo crear una variable para referirme a ese nombre no se si me explico¿Para que necesitas lo que pides?

¡Un saludo!
Regístrate en

NeoB

Era solo por curiosidad...
Gracias.

Oblivi0n

según dices, lo que podrías hacer es un array de punteros, a medida que el usuario introduce var1,var2,...,varN , vas creando nuevas variables, luego si quiere acceder a una variable escribiendo varN, buscaría en el array la n-esima posición. Siento la mala explicación, si eso luego hago un codigo

NeoB

#4
¿Pero eso incluiría el tener que ir creando las variables en tiempo de ejecución, para ir luego guardando su dirección en el array, no? ¿Podrías incluir algo de código porfavor?

durasno

Hola! como ya te explico avesudra no podes crear variables en tiempo de ejecucion; si podes reservar memoria para trabajar con él.
Para hacer lo que queres tenes que seguir el consejo de Oblivi0n(crear un array de punteros), y ademas tendrias que tener una variable para almacenar el valor de lo que creas. Ejemplo simple:

#define MAX_NAME 10
int main()
{
char *nameVar;
int dato;
nameVar=malloc(sizeof (char) * MAX_NAME);

printf("Ingrese nombre de variable\n");
scanf("%s",nameVar);
printf("Ingrese dato\n");
scanf("%d",&dato);

return 0;
}


Variantes: podrias crear un array de estructuras dinamico. Generalizar el "dato" de tipo void *

Saludos
Ahorrate una pregunta, lee el man

ecfisa

Cita de: NeoB en 27 Julio 2012, 10:18 AM
Buenas. Me pregunto si en C hay alguna forma de asignar a una variable el valor de otra como nombre, por ejemplo, si tengo una cadena (introducida por el usuario o no) que contiene "var1", puedo crear una variable que se llame var1; o si se puede acceder a una variable llamada var2, a través de una cadena como "var2".
Hola.

En tiempo de ejecución y en  forma directa como infiero de tu mensaje, no es posible. El compilador convierte los identificadores, tales como nombres de variables, en direcciones de memoria; y este proceso no es reversible.

Pero sí podes emularlo mediante un array para entonces acceder por el nombre , como ya te han sugerido.


Saludos.