elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Esto se puede en C?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Esto se puede en C?  (Leído 2,009 veces)
NeoB

Desconectado Desconectado

Mensajes: 69


Ver Perfil
¿Esto se puede en C?
« 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".
-> He buscado en google pero...
-> Gracias.


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: ¿Esto se puede en C?
« Respuesta #1 en: 27 Julio 2012, 12:17 pm »

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!


En línea

Regístrate en
NeoB

Desconectado Desconectado

Mensajes: 69


Ver Perfil
Re: ¿Esto se puede en C?
« Respuesta #2 en: 27 Julio 2012, 12:40 pm »

Era solo por curiosidad...
Gracias.
En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: ¿Esto se puede en C?
« Respuesta #3 en: 27 Julio 2012, 13:52 pm »

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
En línea

NeoB

Desconectado Desconectado

Mensajes: 69


Ver Perfil
Re: ¿Esto se puede en C?
« Respuesta #4 en: 27 Julio 2012, 14:56 pm »

¿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?
« Última modificación: 27 Julio 2012, 15:08 pm por NeoB » En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: ¿Esto se puede en C?
« Respuesta #5 en: 27 Julio 2012, 20:35 pm »

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:

Código
  1. #define MAX_NAME 10
  2. int main()
  3. {
  4. char *nameVar;
  5. int dato;
  6. nameVar=malloc(sizeof (char) * MAX_NAME);
  7.  
  8. printf("Ingrese nombre de variable\n");
  9. scanf("%s",nameVar);
  10. printf("Ingrese dato\n");
  11. scanf("%d",&dato);
  12.  
  13. return 0;
  14. }
  15.  

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

Saludos
En línea

Ahorrate una pregunta, lee el man
ecfisa

Desconectado Desconectado

Mensajes: 114


Ver Perfil
Re: ¿Esto se puede en C?
« Respuesta #6 en: 27 Julio 2012, 22:59 pm »

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.

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
esto se puede? « 1 2 »
Programación Visual Basic
Petro_Boca 13 3,825 Último mensaje 26 Septiembre 2010, 12:07 pm
por -=[ §ÂßÂÑÐØ ]=-
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines