• Viernes 17 de Mayo de 2024, 00:29

Autor Tema:  por que me da error al intentar abrir el archivo??  (Leído 3016 veces)

Jessi

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
por que me da error al intentar abrir el archivo??
« en: Jueves 30 de Abril de 2009, 09:56 »
0
me podeis ayudar con el siguiente codigo??


function suma

           fid = fopen('archivo.m','r');
           
           while feof(fid) == 0
               
               filename = fgetl(fid);
               disp(filename)
               fid2=fopen('filename')
                         
           end
           
           fclose(fid);
           
end
 
el archivo.m contiene lo siguiente:

'2006060200522900dBZ.vol.ascii'
'2006060201022900dBZ.vol.ascii'


lo que me pasa es q el segundo fopen (el de dentro del while) me devuelve un -1, es decir, un error y no se abre el archivo con nombre '2006060200522900dBZ.vol.ascii'.

Me podeis ayudar???
 
muchisimas gracias

allisap

  • Miembro MUY activo
  • ***
  • Mensajes: 259
  • Nacionalidad: mx
    • Ver Perfil
Re: por que me da error al intentar abrir el archivo??
« Respuesta #1 en: Jueves 30 de Abril de 2009, 17:35 »
0
si tu archivo .m solo tiene esas dos lineas de texto, ¿no es mas facil leerlar directamente?
es decir hacer esto
fid = fopen('2006060200522900dBZ.vol.ascii','r');
fid2 = fopen('2006060201022900dBZ.vol.ascii','r');

saludos

Victor Pasilla Campos

Jessi

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: por que me da error al intentar abrir el archivo??
« Respuesta #2 en: Jueves 30 de Abril de 2009, 17:52 »
0
Primero de todo, gracias por contestar.

Este es un ejemplo, el archivo seran unas 100 lineas. Lo q pasa q para hacer pruebas y ver si funciona solo he puesto 2. Por eso queria leerlas del archivo aparte, y asi hacer un bucle en el programa principal.

un saludo

allisap

  • Miembro MUY activo
  • ***
  • Mensajes: 259
  • Nacionalidad: mx
    • Ver Perfil
Re: por que me da error al intentar abrir el archivo??
« Respuesta #3 en: Jueves 30 de Abril de 2009, 20:48 »
0
ah ok...

bueno, lo primero que veo es que el segundo fopen no tiene los atributos de lectura, segundo
dices que son 100 nombres de archivo diferentes, y la apertura de archivo la estas realizando dentro de un ciclo while
pero cierras el archivo fuera del ciclo por lo que solo vas a cerrar el ultimo, y los otros 99 van a seguir abiertos, esta no es
una buena practica, es mejor que abras un archivo operes sobre el, y luego lo cierres,

por ultimo el -1 indica que no pudo abrir el archivo primero verifica que esta en la misma carpeta y que el nombre de archivo sea correcto.

espero te sirva
Saludos
Victor Pasilla Campos

Jessi

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: por que me da error al intentar abrir el archivo??
« Respuesta #4 en: Viernes 1 de Mayo de 2009, 15:13 »
0
Gracias otra vez.

Miraré bien esas cosas, aunque creo que los nombres estan bien puestos.
Y una cosa: si cierro el archivo donde están los 100 nombres cada vez que corre el while, ¿puedo unsar la función fgtel? Porque esta función va línea a línea, ¿no?

Bueno, a ver si miro esas cositas y te comento. Me está volviendo loca esto, porque una vez que solucione esto el resto del programa que tengo que hacer es fácil (o eso creo, jeje).

Muchas gracias de verdad.

Saludos victor

Jessi

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: por que me da error al intentar abrir el archivo??
« Respuesta #5 en: Martes 5 de Mayo de 2009, 12:03 »
0
hola!

he comprobado que los nombres estan bien, he añadido los atributos correspondientes al fopen, ... y nada.
estoy un poco desesperada...

Jessi

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: por que me da error al intentar abrir el archivo??
« Respuesta #6 en: Martes 5 de Mayo de 2009, 12:06 »
0
el caso es que si lo pongo asi, no me da error:

function suma

fid = fopen('archivo.m','r');

while feof(fid) == 0

filename = fgetl(fid);
disp(filename)
fid2=fopen('2006060200522900dBZ.vol.ascii')

end

fclose(fid);

end

Jessi

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: por que me da error al intentar abrir el archivo??
« Respuesta #7 en: Martes 5 de Mayo de 2009, 12:07 »
0
el caso es que si lo pongo asi, no me da error:

function suma

fid = fopen('archivo.m','r');

while feof(fid) == 0

filename = fgetl(fid);
disp(filename)
fid2=fopen('2006060200522900dBZ.vol.ascii')

end

fclose(fid);

end

allisap

  • Miembro MUY activo
  • ***
  • Mensajes: 259
  • Nacionalidad: mx
    • Ver Perfil
Re: por que me da error al intentar abrir el archivo??
« Respuesta #8 en: Miércoles 6 de Mayo de 2009, 04:00 »
0
hola ,  te coloco algunos comentarios  en tu programa a ver si te pueden servir
 

function suma  % si es el programa principal, no necesita ser una funcion

fid = fopen('archivo.m','r');   % aqui abres el primer archivo que contiene los demas nombres de archivos

while feof(fid) == 0

filename = fgetl(fid);
disp(filename)
fid2=fopen('2006060200522900dBZ.vol.ascii')  % aqui abres otro archivo ,
%pero creo que querias abrir el obtenido en filename por lo que deberias tener
%fid2=fopen(filename)-,
% aqui deberias hacer algo con el archivo abierto
% y luego cerrarlo, porque si no lo cierras al terminar el while tendrias muchos archivos abiertos
%y solo estas cerrando el archivo principal fuera del while.

end
fclose(fid);   % este close fid cierra el archivo principal
% otra opcion si realmente quieres tener todos los archivos abiertos, es cerrarlos al final
% usando fclose (all);

end


espero te sirva

Saludos
Victor Pasilla

Jessi

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: por que me da error al intentar abrir el archivo??
« Respuesta #9 en: Miércoles 6 de Mayo de 2009, 10:23 »
0
hola!

despues de darle unas vueltas al programa con un compañero, hemos decucido que puede dar error porque en "filename" no hay el valor que debe de haber. igual es que hay que poner "el contenido de la variable" como en el lenguaje de programacion C haciamos con el * (punteros).

puede ser algo asi???

un salduo