SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: m0skit0 en Domingo 19 de Julio de 2009, 02:22

Título: Error en lseek()
Publicado por: m0skit0 en Domingo 19 de Julio de 2009, 02:22
Tengo esta porción de código:

Código: C
  1. #include <stdio.h>
  2. #define OFFSET_START 0x393158
  3.  
  4. typedef struct
  5. {
  6.     unsigned int module_name_pointer;
  7.     unsigned short int import_flags;
  8.     unsigned short int lib_version;
  9.     unsigned short int number_stubs;
  10.     unsigned short int stub_size; //(in words)
  11.     unsigned int nid_pointer;
  12.     unsigned int jump_pointer;
  13. } tStubEntry;
  14.  
  15. void parse_bin(FILE* file)
  16. {
  17.     tStubEntry stub_entry;
  18.     int cur_offset;
  19.  
  20.     cur_offset = OFFSET_START;
  21.    
  22.     do
  23.     {
  24.         cur_offset = lseek(file, cur_offset, SEEK_SET);
  25.         if(cur_offset < 0)
  26.         {
  27.             printf("Error 1 at parse_bin()n");
  28.             return;
  29.         }
  30.            
  31.         cur_offset += fread(&stub_entry, sizeof(tStubEntry), 1, file);     
  32.     } while (output_stub(file, &stub_entry));
  33. }
  34.  
pero me da error nada más entrar en el bucle while, sale por cur_offset = -1, es decir, que lseek() ha fallado. El fichero que estoy manejando es de 28 MiB, así que ese desplazamiento existe de sobra... ¿Alguien sabe a qué puede deberse esto?
Título: Re: Error en lseek()
Publicado por: Eternal Idol en Domingo 19 de Julio de 2009, 15:13
¿Como abriste el archivo? ¿Cual es el error? Podes usar GetLastError tambien supongo.
Título: Re: Error en lseek()
Publicado por: m0skit0 en Jueves 23 de Julio de 2009, 12:50
Solucionado Eternal Idol, gracias por la respuesta. Simplemente con cambiar el nombre de la variable de "file" a otra cosa funcionó.