long int ftell(FILE *fichero);
Mi problema es que no estoy segura de qué posición me está devolviendo exactamente. (ya se que es la posicion en la que se encuentra leyendo en el archivo...pero no es ese exactamente mi problema)
Esto es debido a que yo tengo declaradas dos estructuras:
- Una se llama Respuestas (es una lista enlazada que contiene diversas respuestas con su id y su vector de respuestas...ademas de un número entero)
- La otra es tipoPersonaje, que además de varios atrubutos de un personaje tales como el nombre, los apellidos...etc, cuenta con un atributo que es una lista enlazada de Respuestas (la estrcutura antes mencionada)
Cuando estoy cargando los datos desde el archivo binario en que se encuentran tengo el siguiente código:
Código C:
Ver original
if(num) { for(i=0;i<num;i++) { cantidad = personaje.numResp; //falla al asignar a personaje.answers la lista de respuestas extraida... personaje.answers = *crearListaRespuestas(nom_archivo, pos, cantidad); anyadirPersonaje(personajes, personaje); } } // fin if _num
*NOTA: el if(num) viene de antes, solo he copiado el trozo de código que afecta directamente a mi problema.
cuando yo llamo a la función ftell...me devuelve la posición en la que está...¿¿Esto es antes de la lista enlaza de respuestas o despues?? (la lista enlazada de respuestas es el ultimo atributo de la clase tipoPersonaje)
Si la posición que me está mandando no es la de justo antes de la lista enlazada de respuestas (la cual recorro en crearListaRespuestas)...¿¿Habría alguna manera de saber dicha posición para podersela mandar manualmente?? Varía dependiendo de los campos del personaje q hayan sido rellenados?? (por ejemplo, si en nombre que lo tengo declarado con 40 caracteres solo he usado 4 caracteres...ocupa 4 o 40??) o es fijo con el numero de bytes declarados en la estructura??
Gracias un saludo