[C][?] Problema apertura de archivos

Iniciado por Oblivi0n, 28 Febrero 2011, 23:30 PM

0 Miembros y 1 Visitante están viendo este tema.

Oblivi0n

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
void Initialize_File()
{
File.file = fopen(File.path,"rb");

if(File.file != NULL)
{
printf("se pudo abrir el archivo\n");
}
else if(File.file == NULL)
{
printf("No se pudo\n");
}
system("PAUSE");
}


(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.
void GetPath()
{
char path[64];
File.path_len = 0;
int i = 0;
printf("Introduce la ruta\n");
gets(path);
while(path[i] != '\0')
{
File.path_len++;
i++;
}
File.path = (char*) malloc(File.path_len * sizeof(char));
File.path = path;
printf("La cadena es %s y mide %d caracteres",File.path,File.path_len);
system("PAUSE");
}


Tambien pongo la estructura desde en la que se guardarian todos los datos
struct disas_file{
char *path;
int path_len;
int size;
FILE *file;
char *data;
};



Gracias de antemano!

ace332

Creo que esta línea

File.path = (char*) malloc (File.path_len * sizeof(char));


debería estar escrita asi

File.path = (char*) malloc ((File.path_len +1) * sizeof(char));


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

Osea que esto

File.path = path;


esta mal. Deberias utlizar strcpy ..

Saludos

Oblivi0n

Muchas gracias, errores tontos los mios  :xD

Funcionó!

Garfield07

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


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo