Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Oblivi0n en 28 Febrero 2011, 23:30 pm



Título: [C][?] Problema apertura de archivos
Publicado por: Oblivi0n en 28 Febrero 2011, 23:30 pm
Buenas gente.

Estoy haciendo un "editor hexadecimal" bastante basico, el caso es que quiero que habra cualquier archivo del disco duro, y para ello tengo este fragmento de codigo
Código
  1. void Initialize_File()
  2. {
  3. File.file = fopen(File.path,"rb");
  4.  
  5. if(File.file != NULL)
  6. {
  7. printf("se pudo abrir el archivo\n");
  8. }
  9. else if(File.file == NULL)
  10. {
  11. printf("No se pudo\n");
  12. }
  13. system("PAUSE");
  14. }

(los system("PAUSE") son para ir haciendo pruebas)

File.path es la direccion del archivo, (que ingrese previamente), este metodo ya lo utilice mas veces y me funcionaba, sin embargo hoy no me abre los archivos, dejo tambien el codigo que obtiene la ruta.
Código
  1. void GetPath()
  2. {
  3. char path[64];
  4. File.path_len = 0;
  5. int i = 0;
  6. printf("Introduce la ruta\n");
  7. gets(path);
  8. while(path[i] != '\0')
  9. {
  10. File.path_len++;
  11. i++;
  12. }
  13. File.path = (char*) malloc(File.path_len * sizeof(char));
  14. File.path = path;
  15. printf("La cadena es %s y mide %d caracteres",File.path,File.path_len);
  16. system("PAUSE");
  17. }

Tambien pongo la estructura desde en la que se guardarian todos los datos
Código
  1. struct disas_file{
  2. char *path;
  3. int path_len;
  4. int size;
  5. FILE *file;
  6. char *data;
  7. };


Gracias de antemano!


Título: Re: [C][?] Problema apertura de archivos
Publicado por: ace332 en 1 Marzo 2011, 00:04 am
Creo que esta línea
Código
  1. File.path = (char*) malloc (File.path_len * sizeof(char));
  2.  

debería estar escrita asi
Código
  1. File.path = (char*) malloc ((File.path_len +1) * sizeof(char));
  2.  

Y también faltaría copiar la cadena al espacio de memoria reservado..

Osea que esto
Código
  1. File.path = path;
  2.  

esta mal. Deberias utlizar strcpy ..

Saludos


Título: Re: [C][?] Problema apertura de archivos
Publicado por: Oblivi0n en 1 Marzo 2011, 00:23 am
Muchas gracias, errores tontos los mios  :xD

Funcionó!


Título: Re: [C][?] Problema apertura de archivos
Publicado por: Garfield07 en 1 Marzo 2011, 12:39 pm
Aún no debería...

Deberías usar strncpy
Deberías usar fgets  antes que gets. Es peligroso. Pásame todo el código fuente y me saco de la manga uno o dos BoF...
Y a ver cómo defines File.file, se define como [FILE *file]. No sé cómo lo has puesto, a lo mejor así te sigue dando fallos...
Y en lo del path_len hay una función llamada strlen que hace lo mismo pero mejor que como tú lo estás haciendo...
Más que se resta uno, no se suma...

Un saludo!
Sagrini