SoloCodigo

Programación Específica => Matlab => Mensaje iniciado por: Ciklope en Domingo 18 de Enero de 2009, 14:31

Título: Entrada de fichero
Publicado por: Ciklope en Domingo 18 de Enero de 2009, 14:31
Necesito crear un programa que pida al usuario el nombre de un fichero previamente creado por él, para posteriormente cargar el fichero en una matriz y trabajar sobre ella.

Mi problema es que me gustaría mostrar un mensaje de error en caso de que el usuario teclee un nombre incorrecto, y darle la oportunidad de volver a intentarlo, pero no sé cómo hacerlo.

Estaré muy agradecido por cualquier pequeña ayuda. Un saludo a todos
Título: Re: Entrada de fichero
Publicado por: Ciklope en Miércoles 21 de Enero de 2009, 19:13
Si no se puede hacer de esa forma, podría obligar al usuario a que el fichero de entrada tenga un determinado nombre. Per aún así, tengo un problema: si el usuario escribe uno solo de los caraceres del nombre del fichero, Matlab lo da por válido. Os pego un trozo del programa para que lo veáis:

chivato='ficheroentrada.txt'
entrada=input('Escriba el nombre del fichero');
while entrada~=chivato
       entrada=input('Escriba el nombre del fichero');
end


De esta forma, si el usuario escribe "f" el programa sale del lazo while y continúa.
Título: Re: Entrada de fichero
Publicado por: Geo en Jueves 29 de Enero de 2009, 22:55
Para comparar cadenas de texto se debe utilizar la función strcmp o strcmpi, la primera distingue entre mayúsculas y la segunda no. Estas funciones comparan dos cadenas de texto y devuelven 1 en el caso de que sean iguales, 0 si no.
Usarías algo como esto:

Código: Text
  1.  
  2. esperado = 'archivo.txt';
  3. recibido = '';
  4.  
  5. while ( strcmpi( esperado, recibido ) ~= 1 )
  6.     recibido = input( 'Introduzca nombre de archivo: ', 's' );
  7. end
  8.  
  9.  
Si deseas mostrar un error si el archivo no corresponde, podrías hacerlo así:

Código: Text
  1.  
  2. esperado = 'archivo.txt';
  3. recibido = input( 'Introduzca nombre de archivo: ', 's' );
  4.  
  5. while ( strcmpi( esperado, recibido ) ~= 1 )
  6.     recibido = input( 'Error en nombre de archivo, introduzca de nuevo: ', 's' );
  7. end
  8.  
  9.  

No entendí muy bien si deseas restringir el nombre del archivo o si deseas evitar que se introduzca uno que no existe :p.

Suerte :).
Título: Re: Entrada de fichero
Publicado por: Ciklope en Viernes 30 de Enero de 2009, 19:20
Perfecto, con eso me sirve :)

Muchas gracias!