Tengo la siguiente definicion:
typedef struct
{ // 552 bytes (+4 overhead using malloc) ==> 556 bytes required per file opened
int clus_start; // Starting cluster of open file
int clus_current; // Current cluster of open file
int clus_next; // Next (reading) cluster of open file
int clus_prev; // Previous cluster of open file
char sec_offset; // Current sector withing current cluster
long entry_sec_addr; // Sector address of File entry of open file
FILE_DIR_ENTRY *file_dep; // Entry Pointer to the offset of the File Info
char buff[512]; // Open file read/write buffer
long length; // Length of file
long position; // Current position in file relative to begining
char mode; // 0=>closed, 1=>open for read, 2=>open for write, 3=> open for append
char error; // Error indicator
char EOF_flag; // End of File Flag
char *pntr; // Pointer for file data use
#ifdef _NO_MALLOC_
char used_flag; // Flag to see if the file is used or not
#endif
} FILE;
Luego defino la variable
Archivo como
FILE de la siguiente forma:
FILE *Archivo;
Long longitud;
En cierta parte del programa a "Archivo" se le asignan los valores y eso se hace correctamente tanto en simulación como en la realidad pero al intentar pasar el valor de "length" mediante la instruccion:
longitud = Archivo.Length; longitud toma un valor erroneo
pero, si hago esto:
longitud = Archivo -> length; si funciona.
¿Alguien podria decir que esta pasando? ¿acaso las dos formas no son equivalentes?