Hola a tod@s
me gustaría saber si se puede recorrer una estructura de datos en C sin saber qué campos la componen, crear un bucle que recorra la estructura y me devuelva nombre de campo y valor.
Gracias de antemano
| |||
Respuesta: Recorrer una estructura sin conocer sus campos Cita: A mi también me interesaría recorrer una estructura sin conocer sus campos. ¿Alguien se ha encontrado con este problema y lo ha solventado?Gracias!! |
| |||
Respuesta: Recorrer una estructura sin conocer sus campos Hola, yo tengo un problema similar, trato de leer un archivo sin saber que estructura ocuparon para guardar los datos, una solucion a medias que encontre, es crear una estructuctura con todos los tipos de datos, he ir leyendo dato por dato, solo que tu tienes que indicar cual es el que es valido, entonces el cursor de coloca en el siguiente dato, ek problema que tengo es que no se como leer cadenas de caracteres: Bueno les dejo el codigo que hice y si alguien lo puede mejorar se los agradecere. Utiliza las llamadas al sistema de Linux: ************************************************** ******* #include<unistd.h> #include<stdio.h> #include<stdlib.h> #include<fcntl.h> main(){ union un{ int dai; float daf; long long dal; double dad; char dac; }uni; int i=0; int fd = open( "archivo" , O_RDONLY , 777); printf("****************************************** *************\n"); printf( " Tamaño de la Union %d \n " , sizeof(uni) ); while(read(fd , &uni , sizeof(uni)) > 0 ){ printf(" 1.- int\t %d\n" , uni.dai); printf(" 2.- float\t %f\n" , uni.daf); printf(" 3.- long long\t %lld \n" , uni.dal); printf(" 4.- double\t %lf\n" , uni.dad); printf(" 5.- char\t %s" , uni.dac); printf("\n\nDato aceptado : "); scanf("%d" , &i ); switch(i){ case 1:lseek(fd , ( sizeof(int) - sizeof(uni) ) , SEEK_CUR); break; case 2:lseek(fd , (sizeof(float) -sizeof(uni)) , SEEK_CUR); break; case 3:lseek(fd, (sizeof(long long) - sizeof(uni)) , SEEK_CUR); break; case 4:lseek(fd, (sizeof(double)-sizeof(uni)),SEEK_CUR); break; case 5:lseek(fd, (sizeof(uni.dac)-sizeof(uni)) ,SEEK_CUR); break; } } } ************************************************** ******* Espero que les sirva y tambien me puedan ayudar (solo cambia el nombre del archivo por "archivo") |
| ||||
Respuesta: Recorrer una estructura sin conocer sus campos Mu ingeniosa tu respuesta sr_x Pero no se para que quieren hacer esto. Esto me seuna a hacking ¬¬ Bueno yo no se hacerlo en C. Pero en Java a traves del flujo de objetos tu puedes recuperar y guardar archivos como si nada. simplemente se trabaja como si fuera un tipo object. Creo que era algo asi |